Menyiapkan pemulihan dari bencana untuk Microsoft SQL Server dengan PD asinkron


Tutorial ini menjelaskan cara mengaktifkan Replikasi Asinkron Persistent Disk (Replikasi Asinkron PD) di dua region Google Cloud sebagai solusi pemulihan dari bencana (DR), dan cara menampilkan instance DR jika terjadi bencana. Untuk tujuan dokumen ini, bencana adalah peristiwa saat cluster ketersediaan tinggi (HA) database utama gagal atau menjadi tidak tersedia. Database utama dapat gagal jika region tempatnya 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 proyek 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. Make sure 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 DR.

Pemulihan dari bencana untuk replikasi Persistent Disk asinkron

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

Replikasi Asinkron PD adalah opsi penyimpanan yang menyediakan replikasi data secara asinkron antara dua region. Jika terjadi pemadaman layanan 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 (disaster recovery) 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 zonanya berbeda (zona A dan B). Dua instance di R1 menkoordinasikan statusnya menggunakan mode commit sinkron. 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 akan dilampirkan ke VM untuk mengaktifkan node secara online.

Proses pemulihan dari bencana

Proses DR dimulai saat region 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 secara online.
  4. Database utama baru di region DR (R2) divalidasi dan diaktifkan secara online untuk mengaktifkan konektivitas.
  5. Pengguna melanjutkan pemrosesan di database utama yang 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.

Memilih 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 versi SQL Server 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 dalam 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 menyiapkan lingkungan HA, Anda harus menginstal Microsoft SQL Server Management Studio satu kali untuk setiap zona guna memastikannya tetap tersedia jika zona lain tidak tersedia.

Menyiapkan pemulihan dari bencana (disaster recovery) untuk Microsoft SQL Server

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

Untuk mengetahui 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 region. Satu instance berfungsi sebagai instance utama, dan instance lainnya berfungsi sebagai instance 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 ditetapkan.

  1. Buat grup konsistensi untuk node SQL dan pengontrol domain. Salah satu batasan untuk disk zona adalah grup konsistensi tidak dapat mencakup seluruh 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. Membuat disk sekunder kosong di region yang disambungkan

    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 akan menampilkan Active.

Menyimulasikan pemulihan dari bencana (disaster recovery)

Di bagian ini, Anda akan menguji arsitektur disaster recovery yang disiapkan dalam tutorial ini.

Menyimulasikan pemadaman layanan dan menjalankan 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, agar dapat menggunakan alamat IP yang sama.

Sebelum memulai failover, pastikan node-1 adalah node utama untuk grup ketersediaan AlwaysOn yang Anda buat. Tampilkan pengontrol domain dan node SQL Server utama untuk menghindari masalah sinkronisasi data, karena kedua node dilindungi oleh dua grup konsistensi terpisah. Untuk menyimulasikan pemadaman, gunakan 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. Menghentikan 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 layanan dan kegagalan 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 berhasil dipulihkan dan server berfungsi seperti yang diharapkan. Untuk menguji database, Anda akan menjalankan kueri tertentu 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 tagihan ke 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