Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Topik ini menjelaskan cara melakukan failover manual tanpa kehilangan data (failover manual yang direncanakan) pada grup ketersediaan AlwaysOn dengan menggunakan SQL Server Management Studio, Transact-SQL, atau PowerShell di SQL Server. Grup ketersediaan mengalami kegagalan di tingkat replika ketersediaan. Failover manual yang direncanakan, seperti failover grup ketersediaan AlwaysOn, mentransisikan replika sekunder ke peran utama. Seiring dengan itu, failover mengalihkan replika utama sebelumnya ke peran sekunder.
Failover manual yang direncanakan hanya didukung ketika replika utama dan replika sekunder target berjalan dalam mode komit sinkron dan saat ini disinkronkan. Failover manual yang direncanakan mempertahankan semua data dalam database sekunder yang bergabung ke grup ketersediaan pada replika sekunder target. Setelah replika utama sebelumnya beralih ke peran sekunder, databasenya menjadi database sekunder. Kemudian mereka mulai menyinkronkan dengan database utama baru. Setelah mereka semua beralih ke status SYNCHRONIZED, replika sekunder yang baru dapat memenuhi syarat untuk berfungsi sebagai target untuk failover manual yang direncanakan di masa mendatang.
Catatan
Jika replika sekunder dan utama dikonfigurasi untuk mode failover otomatis, setelah replika sekunder disinkronkan, replika tersebut juga dapat berfungsi sebagai target untuk failover otomatis. Untuk informasi selengkapnya, lihat Mode ketersediaan (grup ketersediaan AlwaysOn).
Sebelum Anda mulai
Penting
Ada prosedur khusus untuk melakukan failover pada grup ketersediaan skala baca tanpa manajer kluster. Saat grup ketersediaan memiliki CLUSTER_TYPE = NONE, ikuti prosedur di bawah Alihkan replika utama pada grup ketersediaan dengan skala baca.
Pembatasan dan batasan
Perintah failover kembali segera setelah replika sekunder target menerima perintah. Namun, pemulihan database terjadi secara asinkron setelah grup ketersediaan selesai melakukan failover.
Konsistensi lintas basis data di antara basis data dalam grup ketersediaan mungkin tidak dipertahankan pada failover.
Catatan
Dukungan untuk transaksi lintas database dan terdistribusi bervariasi menurut SQL Server dan versi sistem operasi. Untuk informasi selengkapnya, lihat Transaksi lintas database dan transaksi terdistribusi untuk grup ketersediaan AlwaysOn dan pencerminan database (SQL Server).
Prasyarat dan pembatasan
Replika sekunder target dan replika primer harus berjalan dalam mode ketersediaan komit sinkron.
Saat ini, replika sekunder target harus disinkronkan dengan replika utama. Semua database sekunder pada replika sekunder ini harus digabungkan ke grup ketersediaan. Mereka juga harus disinkronkan dengan database utama yang sesuai (yaitu, database sekunder lokal harus DISINKRONKAN).
Petunjuk
Untuk menentukan kesiapan failover replika sekunder, kueri kolom is_failover_ready dalam tampilan manajemen dinamis sys.dm_hadr_database_replica_cluster_states . Atau Anda dapat melihat kolom Kesiapan Failover dari dasbor grup Always On.
Tugas ini hanya didukung pada replika sekunder target. Anda harus terhubung ke instans server yang menghosting replika sekunder target.
Keamanan
Hak Akses
Izin UBAH GRUP KETERSEDIAAN diperlukan pada grup ketersediaan. Izin GRUP KETERSEDIAAN KONTROL, izin UBAH GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL juga diperlukan.
Menggunakan SQL Server Management Studio
Untuk melakukan failover secara manual pada grup ketersediaan:
Di Object Explorer, sambungkan ke instans server yang menghosting replika sekunder dari grup ketersediaan yang perlu di-failover. Perluas pohon server.
Perluas node Always On High Availability dan node Grup Ketersediaan.
Klik kanan grup ketersediaan yang akan di-failover, dan pilih Failover.
Panduan Grup Ketersediaan Failover telah dimulai. Untuk informasi lebih lanjut, lihat Gunakan wizard Grup Ketersediaan Failover (SQL Server Management Studio).
Menggunakan Transact-SQL
Untuk melakukan failover secara manual pada grup ketersediaan:
Sambungkan ke instans server yang menghosting replika sekunder target.
Gunakan pernyataan ALTER AVAILABILITY GROUP, sebagai berikut:
UBAH GRUP KETERSEDIAAN group_name FAILOVER
Dalam pernyataan, group_name adalah nama grup ketersediaan.
Contoh berikut secara manual gagal melalui grup ketersediaan MyAg ke replika sekunder yang terhubung:
ALTER AVAILABILITY GROUP MyAg FAILOVER;
Menggunakan PowerShell
Untuk melakukan failover secara manual pada grup ketersediaan:
Ubah direktori (cd) ke instans server yang menghosting replika sekunder target.
Gunakan cmdlet Switch-SqlAvailabilityGroup.
Catatan
Untuk melihat sintaks cmdlet, gunakan cmdlet Get-Help di lingkungan PowerShell SQL Server. Untuk informasi selengkapnya, lihat Mendapatkan bantuan untuk SQL Server PowerShell.
Contoh berikut secara manual mengalihkan grup ketersediaan MyAg ke replika sekunder dengan jalur yang ditentukan:
Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAgUntuk menyiapkan dan menggunakan penyedia PowerShell SQL Server:
Tindak lanjut: Setelah Anda melakukan failover secara manual pada grup ketersediaan
Jika Anda melakukan failover di luar kumpulan failover otomatis dari grup ketersediaan, sesuaikan suara kuorum dari simpul kluster failover Windows Server untuk mencerminkan konfigurasi grup ketersediaan baru Anda. Untuk informasi selengkapnya, lihat Pengklusteran failover Windows Server (WSFC) dengan SQL Server.
Mengalihkan replika utama pada grup ketersediaan baca-saja
Setiap grup ketersediaan hanya memiliki satu replika utama. Replika utama memungkinkan baca dan tulis. Untuk mengubah replika mana yang utama, Anda dapat melakukan failover. Dalam grup ketersediaan umum, manajer kluster mengotomatiskan proses failover. Dalam grup ketersediaan dengan jenis kluster TIDAK ADA, proses failover dilakukan secara manual.
Ada dua cara untuk melakukan failover pada replika utama dalam grup ketersediaan dengan tipe kluster NONE:
- Failover secara manual tanpa kehilangan data
- Failover manual paksa dengan kehilangan data
Proses failover manual tanpa kehilangan data
Gunakan metode ini saat replika utama tersedia, tetapi Anda perlu mengubah sementara atau secara permanen instans mana yang menghosting replika utama. Untuk menghindari potensi kehilangan data, sebelum Anda mengeluarkan failover manual, pastikan bahwa replika sekunder target sudah diperbarui.
Untuk melakukan failover secara manual tanpa kehilangan data:
Jadikan replika utama saat ini dan targetkan replikasi sekunder
SYNCHRONOUS_COMMIT.ALTER AVAILABILITY GROUP [AGRScale] MODIFY REPLICA ON N'<node2>' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);Untuk mengidentifikasi bahwa transaksi aktif diterapkan ke replika utama dan setidaknya satu replika sekunder sinkron, jalankan kueri berikut:
SELECT ag.name, drs.database_id, drs.group_id, drs.replica_id, drs.synchronization_state_desc, ag.sequence_number FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag WHERE drs.group_id = ag.group_id;Replika sekunder disinkronkan ketika
synchronization_state_descadalahSYNCHRONIZED.Perbarui
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITke 1.Skrip berikut mengatur
REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMITke 1 pada grup ketersediaan bernamaag1. Sebelum Anda menjalankan skrip berikut, gantiag1dengan nama grup ketersediaan Anda:ALTER AVAILABILITY GROUP [AGRScale] SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);Pengaturan ini memastikan bahwa setiap transaksi aktif diterapkan ke replika utama dan setidaknya satu replika sekunder sinkron.
Catatan
Pengaturan ini tidak spesifik untuk failover dan harus ditetapkan berdasarkan persyaratan lingkungan.
Atur replika utama dan replika sekunder yang tidak berpartisipasi dalam failover offline untuk mempersiapkan perubahan peran:
ALTER AVAILABILITY GROUP [AGRScale] OFFLINEPromosikan replika sekunder yang ditargetkan menjadi replika primer.
ALTER AVAILABILITY GROUP AGRScale FORCE_FAILOVER_ALLOW_DATA_LOSS;Perbarui peran primer lama dan sekunder lainnya ke
SECONDARY, jalankan perintah berikut pada instans SQL Server yang menghosting replika utama lama:ALTER AVAILABILITY GROUP [AGRScale] SET (ROLE = SECONDARY);Catatan
Untuk menghapus grup ketersediaan, gunakan DROP AVAILABILITY GROUP. Untuk grup ketersediaan yang dibuat dengan jenis kluster NONE atau EXTERNAL, jalankan perintah pada semua replika yang merupakan bagian dari grup ketersediaan.
Lanjutkan pergerakan data, jalankan perintah berikut untuk setiap database dalam grup ketersediaan pada instans SQL Server yang menghosting replika utama:
ALTER DATABASE [db1] SET HADR RESUMEBuat kembali semua listener yang Anda buat untuk tujuan skala baca dan yang tidak dikelola oleh pengelola kluster. Jika pendengar asli menunjuk ke primer lama, letakkan dan buat ulang untuk menunjuk ke primer baru.
Failover manual secara paksa dengan potensi kehilangan data
Jika replika utama tidak tersedia dan tidak dapat segera dipulihkan, maka Anda perlu memaksa failover ke replika sekunder dengan kehilangan data. Namun, jika replika utama asli pulih setelah failover, replika tersebut akan mengasumsikan peran utama. Untuk menghindari setiap replika berada dalam status yang berbeda, hapus primer asli dari grup ketersediaan setelah failover paksa dengan kehilangan data. Setelah server utama asli kembali online, hapus grup ketersediaan darinya sepenuhnya.
Untuk memaksakan failover manual yang menyebabkan kehilangan data dari replika utama N1 ke replika sekunder N2, ikuti langkah-langkah berikut:
Pada replika sekunder (N2), mulai failover paksa:
ALTER AVAILABILITY GROUP [AGRScale] FORCE_FAILOVER_ALLOW_DATA_LOSS;Pada replika utama baru (N2), hapus primer asli (N1):
ALTER AVAILABILITY GROUP [AGRScale] REMOVE REPLICA ON N'N1';Validasi bahwa semua lalu lintas aplikasi diarahkan ke listener dan/atau replika utama baru.
Jika primer asli (N1) online, segera matikan grup ketersediaan AGRScale pada primer asli (N1).
ALTER AVAILABILITY GROUP [AGRScale] OFFLINEJika ada data atau perubahan yang tidak disinkronkan, pertahankan data ini melalui cadangan atau opsi replikasi data lain yang sesuai dengan kebutuhan bisnis Anda.
Selanjutnya, hapus grup ketersediaan dari primer asli (N1):
DROP AVAILABILITY GROUP [AGRScale];Hilangkan database grup ketersediaan pada replika utama asli (N1):
USE [master] GO DROP DATABASE [AGDBRScale] GO(Opsional) Jika diinginkan, Anda sekarang dapat menambahkan N1 kembali sebagai replika sekunder baru ke grup ketersediaan AGRScale.