Mengaktifkan Disaster Recovery untuk Disk Permanen Microsoft SQL Server


Tutorial ini menjelaskan cara mengaktifkan Replikasi Asinkron Persistent Disk (Replikasi Asinkron PD) di dua region sebagai solusi pemulihan dari bencana (DR), dan cara mengaktifkan instance DR jika terjadi bencana. Google Cloud

Untuk tujuan dokumen ini, bencana adalah peristiwa ketika cluster ketersediaan tinggi (HA) database utama gagal atau menjadi tidak tersedia. Database utama dapat gagal jika region tempat database tersebut berada gagal atau menjadi tidak dapat diakses.

Tutorial ini ditujukan untuk arsitek, administrator, dan engineer database.

Tujuan

  • Aktifkan replikasi Persistent Disk asinkron untuk semua node cluster grup ketersediaan SQL Server AlwaysOn yang berjalan di Google Cloud.
  • Simulasikan peristiwa bencana dan lakukan proses pemulihan dari bencana (disaster recovery) lengkap untuk memvalidasi konfigurasi pemulihan dari bencana (disaster recovery).

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

Untuk tutorial ini, Anda memerlukan project Google Cloud . Anda dapat membuat project baru atau memilih project yang sudah dibuat:

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    Pemulihan dari bencana di Google Cloud

    Di Google Cloud, DR berfokus pada penyediaan keberlangsungan pemrosesan, terutama saat region gagal atau tidak dapat diakses. Ada beberapa opsi deployment untuk situs DR dan opsi tersebut akan ditentukan oleh persyaratan toleransi jumlah data yang hilang (RPO) dan batas waktu pemulihan (RTO). Tutorial ini membahas salah satu opsi tempat disk virtual machine (VM) direplikasi dari region utama ke region DR.

    Pemulihan dari bencana untuk replikasi Persistent Disk asinkron

    Replikasi Asinkron Persistent Disk (Replikasi Asinkron PD) memberikan replikasi block storage dengan RPO dan RTO rendah untuk DR aktif-pasif lintas region.

    Replikasi Asinkron PD adalah opsi penyimpanan yang menyediakan replikasi data asinkron antara dua region. Jika terjadi pemadaman listrik regional, Replikasi Asinkron PD memungkinkan Anda melakukan failover data ke region sekunder dan memulai ulang workload di region tersebut.

    Replikasi Asinkron PD mereplikasi data dari disk yang terpasang ke workload yang sedang berjalan yang dikenal sebagai disk utama, ke disk terpisah yang terletak di region lain. Disk yang menerima data yang direplikasi disebut sebagai disk sekunder.

    Untuk memastikan bahwa replika semua disk yang terpasang ke setiap node SQL Server berisi data dari titik waktu yang sama, disk ditambahkan ke grup konsistensi. Dengan grup konsistensi, Anda dapat melakukan DR dan pengujian DR di beberapa disk.

    Arsitektur pemulihan dari bencana (disaster recovery)

    Untuk Replikasi Asinkron PD, diagram berikut menunjukkan arsitektur minimal yang mendukung HA database di region utama, dan replikasi disk dari region utama ke region DR.

    Instance utama dan standby terletak di dua zona di region R1, disk yang mendasarinya direplikasi menggunakan replikasi asinkron ke region R2.

    Gambar 1. Arsitektur pemulihan dari bencana dengan Microsoft SQL Server dan Replikasi Asinkron PD

    Arsitektur ini berfungsi sebagai berikut:

    • Dua instance Microsoft SQL Server, instance utama dan instance standby, adalah bagian dari grup ketersediaan, dan terletak di region yang sama (R1) tetapi zona yang berbeda (zona A dan B). Kedua instance di R1 mengoordinasikan statusnya menggunakan mode synchronous-commit. Mode sinkron digunakan karena mendukung ketersediaan tinggi dan mempertahankan status data yang konsisten.
    • Disk dari kedua node SQL ditambahkan ke grup konsistensi dan direplikasi ke region DR R2. Data direplikasi secara asinkron oleh infrastruktur yang mendasarinya.
    • Hanya disk yang direplikasi ke region R2. Selama DR, VM baru dibuat dan disk yang direplikasi yang ada dipasang ke VM untuk mengaktifkan node.

    Proses pemulihan dari bencana

    Proses DR dimulai saat region menjadi tidak tersedia. Proses DR menetapkan langkah-langkah operasional yang harus dilakukan, baik secara manual maupun otomatis, untuk mengurangi kegagalan region dan menetapkan instance utama yang berjalan di region yang tersedia.

    Proses DR database dasar terdiri dari langkah-langkah berikut:

    1. Region pertama (R1), yang menjalankan instance database utama, menjadi tidak tersedia.
    2. Tim operasi mengenali dan secara resmi mengonfirmasi bencana, dan memutuskan apakah failover diperlukan.
    3. Jika failover diperlukan, replikasi disk dari region utama ke region DR akan dihentikan. VM baru dibuat dari replika disk dan diaktifkan.
    4. Database utama baru di region DR (R2) divalidasi dan diaktifkan secara online sehingga memungkinkan konektivitas.
    5. Pengguna melanjutkan pemrosesan di database utama baru dan mengakses instance utama di R2.

    Meskipun proses dasar ini menetapkan kembali database utama yang berfungsi, proses ini tidak membuat arsitektur HA yang lengkap, di mana instance utama yang baru memiliki node standby.

    Instance utama dan standby terletak di dua zona di region R1, disk yang mendasarinya direplikasi menggunakan replikasi asinkron ke region R2.

    Gambar 2. Deployment SQL Server setelah Pemulihan dari bencana dengan Replikasi Asinkron Persistent Disk

    Penggantian ke region yang dipulihkan

    Saat region utama (R1) kembali online, Anda dapat merencanakan dan menjalankan proses failback. Proses failback terdiri dari semua langkah yang diuraikan dalam tutorial ini, tetapi dalam hal ini, R2 adalah sumber dan R1 adalah region pemulihan.

    Pilih edisi SQL Server

    Tutorial ini mendukung versi Microsoft SQL Server berikut:

    • SQL Server 2016 Enterprise Edition
    • SQL Server 2017 Enterprise Edition
    • SQL Server 2019 Enterprise Edition
    • SQL Server 2022 Enterprise Edition

    Tutorial ini menggunakan fitur grup ketersediaan AlwaysOn di SQL Server.

    Jika Anda tidak memerlukan database utama Microsoft SQL Server HA, dan satu instance database sudah cukup sebagai database utama, Anda dapat menggunakan SQL Server versi berikut:

    • SQL Server 2016 Standard Edition
    • SQL Server 2017 Standard Edition
    • SQL Server 2019 Standard Edition
    • SQL Server 2022 Standard Edition

    SQL Server versi 2016, 2017, 2019, dan 2022 telah menginstal Microsoft SQL Server Management Studio di image; Anda tidak perlu menginstalnya secara terpisah. Namun, dalam lingkungan produksi, sebaiknya Anda menginstal satu instance Microsoft SQL Server Management Studio di VM terpisah di setiap region. Jika Anda menyiapkan lingkungan HA, Anda harus menginstal Microsoft SQL Server Management Studio satu kali untuk setiap zona guna memastikan bahwa aplikasi tersebut tetap tersedia jika zona lain menjadi tidak tersedia.

    Menyiapkan pemulihan dari bencana untuk Microsoft SQL Server

    Tutorial ini menggunakan image sql-ent-2022-win-2022 untuk Microsoft SQL Server Enterprise.

    Untuk daftar lengkap image, lihat Image OS.

    Menyiapkan cluster ketersediaan tinggi dengan dua instance

    Untuk menyiapkan replikasi disk ke region DR untuk SQL Server, pertama-tama buat cluster HA dua instance di suatu region. Satu instance berfungsi sebagai instance utama, dan instance lainnya berfungsi sebagai standby. Untuk menyelesaikan langkah ini, ikuti petunjuk di Mengonfigurasi grup ketersediaan AlwaysOn SQL Server. Tutorial ini menggunakan us-central1 untuk region utama (disebut sebagai R1). Jika mengikuti langkah-langkah dalam Mengonfigurasi grup ketersediaan AlwaysOn SQL Server, Anda akan membuat dua instance SQL Server di region yang sama (us-central1). Anda akan men-deploy instance SQL Server utama (node-1) di us-central1-a, dan instance standby (node-2) di us-central1-b.

    Mengaktifkan replikasi asinkron disk

    Setelah semua VM dibuat dan dikonfigurasi, aktifkan penyalinan disk antar-region dengan membuat grup konsistensi untuk semua disk yang terpasang ke VM. Data disalin dari disk sumber ke disk kosong yang baru dibuat di region yang ditentukan.

    1. Buat grup konsistensi untuk kedua node SQL dan pengontrol domain. Salah satu batasan untuk disk zona adalah grup konsistensi tidak dapat mencakup beberapa zona.

      gcloud compute resource-policies create disk-consistency-group node-1-disk-const-grp \
      --region=$REGION
      
      gcloud compute resource-policies create disk-consistency-group node-2-disk-const-grp \
      --region=$REGION
      
      gcloud compute resource-policies create disk-consistency-group witness-disk-const-grp \
      --region=$REGION
      
    2. Tambahkan disk dari VM utama dan standby ke grup konsistensi yang sesuai.

      gcloud compute disks add-resource-policies node-1 \
      --zone=$REGION-a \
      --resource-policies=node-1-disk-const-grp
      
      gcloud compute disks add-resource-policies node-1-datadisk \
      --zone=$REGION-a \
      --resource-policies=node-1-disk-const-grp
      
      gcloud compute disks add-resource-policies node-2 \
      --zone=$REGION-b \
      --resource-policies=node-2-disk-const-grp
      
      gcloud compute disks add-resource-policies node-2-datadisk \
      --zone=$REGION-b \
      --resource-policies=node-2-disk-const-grp
      
      gcloud compute disks add-resource-policies witness \
      --zone=$REGION-c \
      --resource-policies=witness-disk-const-grp
      
    3. Buat disk sekunder kosong di region berpasangan

      DR_REGION="us-west1"
      gcloud compute disks create node-1-replica \
        --zone=$DR_REGION-a \
        --size=50 \
        --primary-disk=node-1 \
        --primary-disk-zone=$REGION-a
      
      gcloud compute disks create node-1-datadisk-replica \
        --zone=$DR_REGION-a \
        --size=$PD_SIZE \
        --primary-disk=node-1-datadisk \
        --primary-disk-zone=$REGION-a
      
      gcloud compute disks create node-2-replica \
        --zone=$DR_REGION-b \
        --size=50 \
        --primary-disk=node-2 \
        --primary-disk-zone=$REGION-b
      
      gcloud compute disks create node-2-datadisk-replica \
        --zone=$DR_REGION-b \
        --size=$PD_SIZE \
        --primary-disk=node-2-datadisk \
        --primary-disk-zone=$REGION-b
      
      gcloud compute disks create witness-replica \
        --zone=$DR_REGION-c \
        --size=50 \
        --primary-disk=witness \
        --primary-disk-zone=$REGION-c
      
    4. Mulai replikasi disk. Data direplikasi dari disk utama ke disk kosong yang baru dibuat di region DR.

      gcloud compute disks start-async-replication node-1 \
        --zone=$REGION-a \
        --secondary-disk=node-1-replica \
        --secondary-disk-zone=$DR_REGION-a 
      
      gcloud compute disks start-async-replication node-1-datadisk \
        --zone=$REGION-a \
        --secondary-disk=node-1-datadisk-replica \
        --secondary-disk-zone=$DR_REGION-a 
      
      gcloud compute disks start-async-replication node-2 \
        --zone=$REGION-b \
        --secondary-disk=node-2-replica \
        --secondary-disk-zone=$DR_REGION-b 
      
      gcloud compute disks start-async-replication node-2-datadisk \
        --zone=$REGION-b \
        --secondary-disk=node-2-datadisk-replica \
        --secondary-disk-zone=$DR_REGION-b 
      
      gcloud compute disks start-async-replication witness \
        --zone=$REGION-c \
        --secondary-disk=witness-replica \
        --secondary-disk-zone=$DR_REGION-c 
      

    Pada tahap ini, data akan direplikasi antar-region. Status replikasi untuk setiap disk harus menampilkan Active.

    Menyimulasikan pemulihan dari bencana

    Di bagian ini, Anda akan menguji arsitektur pemulihan dari bencana yang disiapkan dalam tutorial ini.

    Menyimulasikan pemadaman layanan dan mengeksekusi failover pemulihan dari bencana

    Selama failover DR, Anda membuat VM baru di region DR dan memasang disk yang direplikasi ke VM tersebut. Untuk menyederhanakan failover, Anda dapat menggunakan Virtual Private Cloud (VPC) yang berbeda di region DR untuk pemulihan, guna menggunakan alamat IP yang sama.

    Sebelum memulai failover, pastikan node-1 adalah node utama untuk grup ketersediaan AlwaysOn yang Anda buat. Aktifkan pengendali domain dan node SQL Server utama untuk menghindari masalah sinkronisasi data, karena kedua node dilindungi oleh dua grup konsistensi terpisah. Untuk menyimulasikan gangguan, ikuti langkah-langkah berikut:

    1. Buat VPC pemulihan.

      DRVPC_NAME="default-dr"
      DRSUBNET_NAME="default-recovery"
      
      gcloud compute networks create $DRVPC_NAME \
      --subnet-mode=custom
      CIDR = $(gcloud compute networks subnets describe default \
      --region=$REGION --format=value\(ipCidrRange\))
      
      gcloud compute networks subnets create $DRSUBNET_NAME \
      --network=$DRVPC_NAME --range=$CIDR --region=$DR_REGION
      
    2. Hentikan replikasi data.

      PROJECT=$(gcloud config get-value project)
      gcloud compute disks stop-group-async-replication projects/$PROJECT/regions/$REGION/resourcePolicies/node-1-disk-const-grp \
      --zone=$REGION-a
      
      gcloud compute disks stop-group-async-replication projects/$PROJECT/regions/$REGION/resourcePolicies/node-2-disk-const-grp \
      --zone=$REGION-b
      
      gcloud compute disks stop-group-async-replication projects/$PROJECT/regions/$REGION/resourcePolicies/witness-disk-const-grp \
      --zone=$REGION-c
      
    3. Hentikan VM sumber di region utama.

      gcloud compute instances stop node-1 \
        --zone=$REGION-a
      
      gcloud compute instances stop node-2 \
        --zone=$REGION-b
      
      gcloud compute instances stop witness \
        --zone=$REGION-c
      
    4. Buat VM di region DR menggunakan replika disk. VM ini akan memiliki alamat IP VM sumber.

      NODE1IP=$(gcloud compute instances describe node-1 --zone $REGION-a --format=value\(networkInterfaces[0].networkIP\))
      NODE2IP=$(gcloud compute instances describe node-2 --zone $REGION-a --format=value\(networkInterfaces[0].networkIP\))
      WITNESSIP=$(gcloud compute instances describe witness --zone $REGION-a --format=value\(networkInterfaces[0].networkIP\))
      
      gcloud compute instances create node-1 \
        --zone=$DR_REGION-a \
        --machine-type $MACHINE_TYPE \
        --network=$DRVPC_NAME \
        --subnet=$DRSUBNET_NAME \
        --private-network-ip $NODE1IP\
        --disk=boot=yes,device-name=node-1-replica,mode=rw,name=node-1-replica \
        --disk=auto-delete=yes,boot=no,device-name=node-1-datadisk-replica,mode=rw,name=node-1-datadisk-replica
      
      gcloud compute instances create witness \
        --zone=$DR_REGION-c \
        --machine-type=n2-standard-2 \
        --network=$DRVPC_NAME \
        --subnet=$DRSUBNET_NAME \
        --private-network-ip $WITNESSIP \
        --disk=boot=yes,device-name=witness-replica,mode=rw,name=witness-replica
      

    Kami telah menyimulasikan pemadaman dan melakukan failover ke region DR. Sekarang kita dapat menguji apakah instance sekunder berfungsi dengan benar atau tidak.

    Memverifikasi konektivitas SQL Server

    Setelah VM dibuat, pastikan database telah dipulihkan dengan berhasil dan server berfungsi seperti yang diharapkan. Untuk menguji database, Anda akan menjalankan kueri pemilihan dari database yang dipulihkan.

    1. Hubungkan ke VM SQL Server menggunakan Desktop Jarak Jauh.
    2. Buka SQL Server Management Studio.
    3. Pada dialog Connect to server, pastikan nama server disetel ke NODE-1, lalu pilih Connect.
    4. Di menu file, pilih File > New > Query dengan koneksi saat ini.

      USE [bookshelf];
      SELECT * FROM Books;
      

    Pembersihan

    Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini:

    Menghapus project

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Langkah berikutnya