Bagikan melalui


Tautan failover - Azure SQL Managed Instance

Aplikasi ke:Azure SQL Managed Instance

Artikel ini mengajarkan cara melakukan failover pada database linked 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:

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 sinkronisasi replikasi database pada server sekunder, sehingga Anda dapat beralih ke server sekunder tanpa kehilangan data. Pastikan aplikasi Anda tidak melakukan transaksi ke primer sebelum failover.

Periksa jeda replikasi

Penting bahwa replika sekunder mengejar replika utama sebelum melakukan failover yang direncanakan. Failover yang direncanakan dapat kehabisan waktu dan gagal jika replika sekunder tertinggal jauh di belakang replika utama.

Gunakan kueri T-SQL berikut pada SQL Server dan SQL Managed Instance untuk memantau jeda replikasi antara replika:

-- Execute on SQL Server and SQL Managed Instance 
USE master
DECLARE @link_name varchar(max) = '<DAGname>'
SELECT
   ag.name [Link name], 
   ars1.role_desc [Link role],
   ars2.connected_state_desc [Link connected state],
   ars2.synchronization_health_desc [Link sync health],
   drs.secondary_lag_seconds [Link replication latency (seconds)]
FROM
   sys.availability_groups ag 
   JOIN sys.dm_hadr_availability_replica_states ars1
   ON ag.group_id = ars1.group_id
   JOIN sys.dm_hadr_availability_replica_states ars2
   ON ag.group_id = ars2.group_id
   JOIN sys.dm_hadr_database_replica_states drs
   ON ars2.replica_id = drs.replica_id
WHERE 
   ag.is_distributed = 1 AND ag.name = @link_name AND ars1.is_local = 1 AND ars2.is_local = 0
GO

Jika lag replikasi tinggi, tunggu hingga replika sekunder mengejar ketinggalan dengan replika utama. Anda mungkin perlu melakukan langkah-langkah pemecahan masalah tambahan jika lag berlanjut, seperti meningkatkan throughput jaringan tautan antara dua instans, atau meningkatkan kapasitas sumber daya pada replika sekunder.

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 yang 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

Penting

Setelah menjalankan failover yang direncanakan, mode replikasi diatur ke asinkron.

Proses failover beberapa database

Jika Anda berencana untuk melakukan failover pada beberapa database dari instans di server yang sama, untuk kinerja dan keterandalan yang optimal, lakukan failover 8 database per instans pada satu waktu. Misalnya, jika Anda memiliki 10 instans dengan masing-masing 32 database tertaut, gagalkan lebih dari 8 database sekaligus dari setiap instans, dan ulangi proses hingga semua database gagal.

Melihat database setelah failover

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

Jika Anda memutus tautan selama failover, Anda dapat menggunakan Object Explorer untuk mengonfirmasi bahwa 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, melakukan failover dengan SQL Server 2022 tidak akan memutus tautan tersebut. Anda dapat mempertahankan tautan setelah failover, yang tetap membuat grup ketersediaan dan grup ketersediaan terdistribusi tetap 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.

Untuk mengatasi masalah ini, lihat Memperbaiki skenario split-brain.

Untuk menggunakan tautan:

Untuk mempelajari selengkapnya tentang tautan:

Untuk skenario replikasi dan migrasi lainnya, pertimbangkan: