Bagikan melalui


Tautan failover - Azure SQL Managed Instance

Berlaku untuk: Azure SQL Managed Instance

Artikel ini mengajarkan anda cara melakukan failover atas database yang ditautkan antara SQL Server dan Azure SQL Managed Instance dengan menggunakan SQL Server Management Studio (SSMS) atau PowerShell untuk tujuan pemulihan bencana atau migrasi.

Prasyarat

Untuk mengalihkan database ke replika sekunder Anda melalui tautan, Anda memerlukan prasyarat berikut:

  • Langganan Azure aktif. Jika Anda tidak memilikinya, buat akun gratis.
  • Versi SQL Server yang didukung dengan pembaruan layanan yang diperlukan terinstal.
  • Tautan dikonfigurasi antara replika utama dan sekunder Anda.
  • Anda dapat melakukan failover pada tautan dengan menggunakan Transact-SQL (saat ini dalam pratinjau) dimulai dengan SQL Server 2022 CU13 (KB5036432).

Hentikan beban kerja

Jika Anda siap untuk melakukan failover database ke replika sekunder, pertama-tama hentikan beban kerja aplikasi apa pun pada replika utama selama jam pemeliharaan Anda. Ini memungkinkan replikasi database mengejar ketinggalan pada sekunder sehingga Anda dapat melakukan failover ke sekunder tanpa kehilangan data. Pastikan aplikasi Anda tidak melakukan transaksi ke primer sebelum failover.

Mengalihkan database

Anda dapat melakukan failover pada database tertaut dengan menggunakan Transact-SQL (T-SQL), SQL Server Management Studio, atau PowerShell.

Anda dapat melakukan failover pada tautan dengan menggunakan Transact-SQL (saat ini dalam pratinjau) dimulai dengan SQL Server 2022 CU13 (KB5036432).

Untuk melakukan failover terencana untuk tautan, gunakan perintah T-SQL berikut pada replika utama:

ALTER AVAILABILITY GROUP [<DAGname>] FAILOVER

Untuk melakukan failover paksa, gunakan perintah T-SQL berikut pada replika sekunder:

ALTER AVAILABILITY GROUP [<DAGname>] FORCE_FAILOVER_ALLOW_DATA_LOSS

Menampilkan database setelah failover

Untuk SQL Server 2022, jika Anda memilih untuk mempertahankan tautan, Anda dapat memeriksa apakah grup ketersediaan terdistribusi ada di bawah Grup Ketersediaan di Object Explorer di SQL Server Management Studio.

Jika Anda menjatuhkan tautan selama failover, Anda dapat menggunakan Object Explorer untuk mengonfirmasi grup ketersediaan terdistribusi tidak ada lagi. Jika Anda memilih untuk menyimpan grup ketersediaan, database akan tetap Disinkronkan.

Bersihkan setelah failover

Kecuali hapus tautan setelah failover berhasil dipilih, failover dengan SQL Server 2022 tidak merusak tautan. Anda dapat mempertahankan tautan setelah failover, yang membuat grup ketersediaan, dan grup ketersediaan terdistribusi aktif. Tidak ada tindakan lebih lanjut yang diperlukan.

Menghilangkan tautan hanya menghilangkan grup ketersediaan terdistribusi, dan membiarkan grup ketersediaan aktif. Anda dapat memutuskan untuk menyimpan grup ketersediaan, atau menghilangkannya.

Jika Anda memutuskan untuk menghilangkan grup ketersediaan Anda, ganti nilai berikut lalu jalankan sampel kode T-SQL:

  • <AGName> dengan nama grup ketersediaan di SQL Server (digunakan untuk membuat tautan).
-- Run on SQL Server
USE MASTER
GO
DROP AVAILABILITY GROUP <AGName> 
GO

Status tidak konsisten setelah failover paksa

Setelah failover paksa, Anda mungkin mengalami skenario split-brain di mana kedua replika berada dalam peran utama, meninggalkan tautan dalam keadaan tidak konsisten. Ini dapat terjadi jika Anda melakukan failover ke replika sekunder selama bencana, dan kemudian replika utama kembali online.

Pertama, konfirmasikan bahwa Anda berada dalam skenario split-brain. Anda dapat melakukannya dengan menggunakan SQL Server Management Studio (SSMS) atau Transact-SQL (T-SQL).

Sambungkan ke SQL Server dan instans terkelola SQL di SSMS, lalu di Object Explorer, perluas replika Ketersediaan di bawah node Grup ketersediaan di Ketersediaan Tinggi AlwaysOn. Jika dua replika yang berbeda tercantum sebagai (Primer), Anda berada dalam skenario split-brain.

Atau, Anda dapat menjalankan skrip T-SQL berikut di SQL Server dan SQL Managed Instance untuk memeriksa peran replika:

-- Execute on SQL Server and SQL Managed Instance 

declare @link_name varchar(max) = '<DAGName>' 
USE MASTER 
GO

SELECT
   ag.name [Link name], 
   rs.role_desc [Link role] 
FROM
   sys.availability_groups ag 
   join sys.dm_hadr_availability_replica_states rs 
   on ag.group_id = rs.group_id 
WHERE 
   rs.is_local = 1 and ag.name = @link_name 
GO

Jika kedua instans mencantumkan Primer yang berbeda di kolom Peran tautan, Anda berada dalam skenario split-brain.

Untuk mengatasi keadaan otak terpisah, pertama-tama ambil cadangan pada replika mana pun yang merupakan primer asli. Jika primer asli adalah SQL Server, maka ambil cadangan log ekor. Jika primer aslinya adalah SQL Managed Instance, maka ambil cadangan penuh khusus salinan. Setelah pencadangan selesai, atur grup ketersediaan terdistribusi ke peran sekunder untuk replika yang dulunya merupakan primer asli tetapi sekarang akan menjadi sekunder baru.

Misalnya, jika terjadi bencana sejati, dengan asumsi Anda telah memaksa failover beban kerja SQL Server Anda ke Azure SQL Managed Instance, dan Anda berniat untuk terus menjalankan beban kerja Anda di SQL Managed Instance, mengambil cadangan log ekor di SQL Server, lalu mengatur grup ketersediaan terdistribusi ke peran sekunder di SQL Server seperti contoh berikut:

--Execute on SQL Server 
USE MASTER

ALTER availability group [<DAGName>] 
SET (role = secondary) 
GO 

Selanjutnya, jalankan failover manual yang direncanakan dari SQL Managed Instance ke SQL Server dengan menggunakan tautan, seperti contoh berikut:

--Execute on SQL Managed Instance 
USE MASTER

ALTER availability group [<DAGName>] FAILOVER 
GO 

Untuk informasi selengkapnya tentang fitur tautan, tinjau sumber daya berikut: