Bagikan melalui


Mengonfigurasi grup ketersediaan AlwaysOn terdistribusi

Berlaku untuk:SQL Server

Untuk membuat grup ketersediaan terdistribusi, Anda harus membuat dua grup ketersediaan masing-masing dengan pendengarnya sendiri. Anda kemudian menggabungkan grup ketersediaan ini ke dalam grup ketersediaan terdistribusi. Langkah-langkah berikut memberikan contoh dasar dalam Transact-SQL. Contoh ini tidak mencakup semua detail pembuatan grup ketersediaan dan pendengar; sebaliknya, ia berfokus pada menyoroti persyaratan utama.

Untuk gambaran umum teknis grup ketersediaan terdistribusi, lihat Grup ketersediaan terdistribusi.

Prasyarat

Untuk mengonfigurasi grup ketersediaan terdistribusi, Anda harus memiliki yang berikut ini:

Catatan

Jika Anda mengonfigurasi listener untuk grup ketersediaan di SQL Server Anda di Azure VM menggunakan nama jaringan terdistribusi (DNN), maka pengaturan grup ketersediaan terdistribusi tambahan pada grup ketersediaan Anda tidak didukung. Untuk mempelajari selengkapnya, lihat Interoperabilitas fitur SQL Server di Azure VM dengan pendengar AG dan DNN.

Hak akses

Memerlukan izin CREATE AVAILABILITY GROUP di server untuk membuat grup ketersediaan dan sysadmin melakukan failover pada grup ketersediaan terdistribusi.

Atur pendengar titik akhir untuk mendengarkan semua alamat IP

Pastikan titik akhir dapat berkomunikasi antara berbagai grup ketersediaan dalam grup ketersediaan terdistribusi. Jika satu grup ketersediaan diatur ke jaringan tertentu di titik akhir, grup ketersediaan terdistribusi tidak berfungsi dengan baik. Di setiap server yang menghosting replika di grup ketersediaan terdistribusi, atur pendengar untuk mendengarkan di semua alamat IP (LISTENER_IP = ALL).

Membuat titik akhir untuk mendengarkan semua alamat IP

Misalnya, skrip berikut membuat titik akhir pendengar pada port TCP 5022 yang mendengarkan di semua alamat IP.

CREATE ENDPOINT [aodns-hadr]
    STATE = STARTED
    AS TCP
(
            LISTENER_PORT = 5022,
            LISTENER_IP = ALL
)
    FOR DATABASE_MIRRORING
(
            ROLE = ALL,
            AUTHENTICATION = WINDOWS NEGOTIATE,
            ENCRYPTION = REQUIRED ALGORITHM AES
);
GO

Mengubah titik akhir untuk mendengarkan semua alamat IP

Misalnya, skrip berikut mengubah titik akhir pendengar untuk mendengarkan semua alamat IP.

ALTER ENDPOINT [aodns-hadr]
    AS TCP
(
            LISTENER_IP = ALL
);
GO

Membuat grup ketersediaan pertama

Membuat grup ketersediaan utama pada kluster pertama

Buat grup ketersediaan pada Kluster Failover Windows Server (WSFC) pertama. Dalam contoh ini, grup ketersediaan dinamai ag1 untuk database db1. Replika utama grup ketersediaan utama dikenal sebagai primer global dalam grup ketersediaan terdistribusi. Server1 adalah utama global dalam contoh ini.

CREATE AVAILABILITY GROUP [ag1]
FOR DATABASE db1
REPLICA ON N'server1' WITH (ENDPOINT_URL = N'TCP://server1.contoso.com:5022',
    FAILOVER_MODE = AUTOMATIC,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
    SEEDING_MODE = AUTOMATIC),
N'server2' WITH (ENDPOINT_URL = N'TCP://server2.contoso.com:5022',
    FAILOVER_MODE = AUTOMATIC,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
    SEEDING_MODE = AUTOMATIC);
GO

Catatan

Contoh sebelumnya menggunakan seeding otomatis, di mana SEEDING_MODE diatur ke OTOMATIS untuk replika dan grup ketersediaan terdistribusi. Konfigurasi ini mengatur replika sekunder dan grup ketersediaan sekunder untuk diisi secara otomatis tanpa memerlukan pencadangan manual dan pemulihan database utama.

Menggabungkan replika sekunder ke grup ketersediaan utama

Setiap replika sekunder harus bergabung ke grup ketersediaan dengan ALTER AVAILABILITY GROUP dengan opsi JOIN . Karena seeding otomatis digunakan dalam contoh ini, Anda juga harus memanggil ALTER AVAILABILITY GROUP dengan opsi GRANT CREATE ANY DATABASE . Pengaturan ini memungkinkan grup ketersediaan untuk membuat database dan mulai menyemainya secara otomatis dari replika utama.

Dalam contoh ini, perintah berikut dijalankan pada replika sekunder, server2, untuk bergabung dengan ag1 grup ketersediaan. Grup ketersediaan kemudian diizinkan untuk membuat database di sekunder.

ALTER AVAILABILITY GROUP [ag1] JOIN
ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE
GO

Catatan

Saat grup ketersediaan membuat database pada replika sekunder, grup tersebut menetapkan pemilik database sebagai akun yang menjalankan ALTER AVAILABILITY GROUP pernyataan untuk memberikan izin untuk membuat database apa pun. Untuk informasi lengkap, lihat Memberikan izin buat database pada replika sekunder ke grup ketersediaan.

Membuat pendengar untuk grup ketersediaan utama

Selanjutnya tambahkan listener untuk grup ketersediaan utama pada WSFC pertama. Dalam contoh ini, pendengar diberi nama ag1-listener. Untuk petunjuk terperinci tentang membuat pendengar, lihat Membuat atau Mengonfigurasi Pendengar Grup Ketersediaan (SQL Server).

ALTER AVAILABILITY GROUP [ag1]
    ADD LISTENER 'ag1-listener' (
        WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) ,
        PORT = 60173);
GO

Membuat grup ketersediaan kedua

Kemudian pada WSFC kedua, buat grup ketersediaan kedua, ag2. Dalam hal ini, database tidak ditentukan, karena secara otomatis disemai dari grup ketersediaan utama. Replika utama grup ketersediaan sekunder dikenal sebagai penerus dalam grup ketersediaan terdistribusi. Dalam contoh ini, server3 adalah penerus.

CREATE AVAILABILITY GROUP [ag2]
FOR
REPLICA ON N'server3' WITH (ENDPOINT_URL = N'TCP://server3.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
    SEEDING_MODE = AUTOMATIC),
N'server4' WITH (ENDPOINT_URL = N'TCP://server4.contoso.com:5022',
    FAILOVER_MODE = MANUAL,
    AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
    BACKUP_PRIORITY = 50,
    SECONDARY_ROLE(ALLOW_CONNECTIONS = NO),
    SEEDING_MODE = AUTOMATIC);
GO

Catatan

  • Grup ketersediaan sekunder harus menggunakan titik akhir pencerminan database yang sama (dalam contoh port 5022 ini). Jika tidak, replikasi akan berhenti setelah failover lokal.
  • Grup ketersediaan yang mendasar harus dalam mode ketersediaan yang sama - kedua grup ketersediaan harus dalam mode penerapan sinkron atau keduanya harus dalam mode penerapan asinkron. Jika Anda tidak yakin mana yang akan digunakan, atur keduanya ke mode penerapan asinkron hingga Anda siap untuk melakukan failover.

Menggabungkan replika sekunder ke grup ketersediaan sekunder

Dalam contoh ini, perintah berikut dijalankan pada replika sekunder, server4, untuk bergabung dengan ag2 grup ketersediaan. Grup ketersediaan kemudian diizinkan untuk membuat database di sekunder untuk mendukung penyemaian otomatis.

ALTER AVAILABILITY GROUP [ag2] JOIN
ALTER AVAILABILITY GROUP [ag2] GRANT CREATE ANY DATABASE
GO

Membuat pendengar untuk grup ketersediaan sekunder

Selanjutnya tambahkan pendengar untuk grup ketersediaan sekunder pada WSFC kedua. Dalam contoh ini, pendengar diberi nama ag2-listener. Untuk petunjuk terperinci tentang membuat pendengar, lihat Membuat atau Mengonfigurasi Pendengar Grup Ketersediaan (SQL Server).

ALTER AVAILABILITY GROUP [ag2]
    ADD LISTENER 'ag2-listener' ( WITH IP ( ('2001:db88:f0:f00f::cf3c'),('2001:4898:e0:f213::4ce2') ) , PORT = 60173);
GO

Membuat grup ketersediaan terdistribusi pada kluster pertama

Pada WSFC pertama, buat grup ketersediaan terdistribusi (bernama distributedAG dalam contoh ini). Gunakan perintah CREATE AVAILABILITY GROUP dengan opsi DISTRIBUTED. Parameter AVAILABILITY GROUP ON menentukan grup ag1 ketersediaan anggota dan ag2.

Untuk membuat grup ketersediaan terdistribusi Anda menggunakan seeding otomatis, gunakan kode Transact-SQL berikut:

CREATE AVAILABILITY GROUP [distributedAG]
   WITH (DISTRIBUTED)
   AVAILABILITY GROUP ON
      'ag1' WITH
      (
         LISTENER_URL = 'tcp://ag1-listener.contoso.com:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = AUTOMATIC
      ),
      'ag2' WITH
      (
         LISTENER_URL = 'tcp://ag2-listener.contoso.com:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = AUTOMATIC
      );
GO

Catatan

LISTENER_URL menentukan pendengar untuk setiap grup ketersediaan bersama dengan titik akhir pencerminan database dari grup ketersediaan. Dalam contoh ini, yaitu port 5022 (bukan port yang 60173 digunakan untuk membuat listener). Jika Anda menggunakan load balancer, misalnya di Azure, menambahkan aturan penyeimbangan beban untuk port grup ketersediaan terdistribusi. Tambahkan aturan untuk port pendengar, selain port instans SQL Server.

Batalkan seeding otomatis ke penerus

Jika, karena alasan apa pun, perlu untuk membatalkan inisialisasi penerus sebelum dua grup ketersediaan disinkronkan, UBAH grup ketersediaan terdistribusi dengan mengatur parameter SEEDING_MODE penerus ke MANUAL dan segera membatalkan penyemaian. Jalankan perintah pada primer global:

-- Cancel automatic seeding​.  Connect to global primary but specify DAG AG2
ALTER AVAILABILITY GROUP [distributedAG] ​
   MODIFY ​
   AVAILABILITY GROUP ON ​
   'ag2' WITH ​
   ( ​ SEEDING_MODE = MANUAL ​ ); ​

Bergabung dengan grup ketersediaan terdistribusi pada kluster kedua

Kemudian bergabunglah dengan grup ketersediaan terdistribusi pada WSFC kedua.

Untuk bergabung dengan grup ketersediaan terdistribusi Anda menggunakan seeding otomatis, gunakan kode Transact-SQL berikut:

ALTER AVAILABILITY GROUP [distributedAG]
   JOIN
   AVAILABILITY GROUP ON
      'ag1' WITH
      (
         LISTENER_URL = 'tcp://ag1-listener.contoso.com:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = AUTOMATIC
      ),
      'ag2' WITH
      (
         LISTENER_URL = 'tcp://ag2-listener.contoso.com:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = AUTOMATIC
      );
GO

Menggabungkan database di sekunder grup ketersediaan kedua

Jika grup ketersediaan kedua disiapkan untuk menggunakan seeding otomatis, maka pindahkan ke langkah 2.

  1. Jika grup ketersediaan kedua menggunakan seeding manual, maka pulihkan cadangan yang Anda ambil pada primer global ke sekunder grup ketersediaan kedua:

    RESTORE DATABASE [db1] FROM DISK = '<full backup location>'
        WITH NORECOVERY;
    
    RESTORE LOG [db1] FROM DISK = '<log backup location>'
        WITH NORECOVERY;
    
  2. Setelah database pada replika sekunder grup ketersediaan kedua dalam status pemulihan, Anda harus menggabungkannya secara manual ke grup ketersediaan.

    ALTER DATABASE [db1]
        SET HADR AVAILABILITY GROUP = [ag2];
    

Failover grup ketersediaan terdistribusi

Karena SQL Server 2022 (16.x) memperkenalkan dukungan grup ketersediaan terdistribusi untuk pengaturan, REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT instruksi untuk failover ketersediaan terdistribusi berbeda untuk SQL Server 2022 dan versi yang lebih baru daripada untuk SQL Server 2019 dan versi yang lebih lama.

Untuk grup ketersediaan terdistribusi, satu-satunya jenis failover yang didukung adalah manual yang dimulai FORCE_FAILOVER_ALLOW_DATA_LOSSpengguna . Oleh karena itu, untuk mencegah kehilangan data, Anda harus mengambil langkah tambahan (dijelaskan secara rinci di bagian ini) untuk memastikan data disinkronkan antara kedua replika sebelum memulai failover.

Jika terjadi keadaan darurat di mana kehilangan data dapat diterima, Anda dapat memulai failover tanpa memastikan sinkronisasi data dengan menjalankan:

ALTER AVAILABILITY GROUP distributedAG FORCE_FAILOVER_ALLOW_DATA_LOSS;

Anda dapat menggunakan perintah yang sama untuk melakukan failover ke penerus, serta failback ke primer global.

Pada SQL Server 2022 (16.x) dan yang lebih baru Anda dapat mengonfigurasi REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT pengaturan untuk grup ketersediaan terdistribusi, yang dirancang untuk menjamin tidak ada kehilangan data ketika grup ketersediaan terdistribusi gagal. Jika pengaturan ini dikonfigurasi, ikuti langkah-langkah di bagian ini untuk melakukan failover pada grup ketersediaan terdistribusi Anda. Jika Anda tidak ingin menggunakan REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT pengaturan, ikuti instruksi untuk melakukan failover pada grup ketersediaan terdistribusi di SQL Server 2019 dan yang lebih lama.

Catatan

Pengaturan REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT ke 1 berarti replika utama menunggu transaksi diterapkan pada replika sekunder sebelum diterapkan pada replika utama, yang dapat menurunkan performa. Meskipun membatasi atau menghentikan transaksi pada utama global tidak diperlukan untuk sinkronisasi grup ketersediaan terdistribusi di SQL Server 2022 (16.x), melakukannya dapat meningkatkan performa transaksi pengguna dan sinkronisasi grup ketersediaan terdistribusi ketika REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT diatur ke 1.

Langkah-langkah untuk memastikan tidak ada kehilangan data

Untuk memastikan tidak ada kehilangan data, Anda harus terlebih dahulu mengonfigurasi grup ketersediaan terdistribusi untuk mendukung tidak ada kehilangan data dengan mengikuti langkah-langkah berikut:

  1. Untuk mempersiapkan failover, verifikasi bahwa utama dan penerus global terkonfigurasi dalam mode SYNCHRONOUS_COMMIT. Jika tidak, setel menjadi SYNCHRONOUS_COMMIT hingga ALTER AVAILABILITY GROUP.
  2. Atur grup ketersediaan terdistribusi ke komit sinkron pada baik primer global maupun penerus.
  3. Tunggu hingga grup ketersediaan terdistribusi disinkronkan.
  4. Pada pengaturan utama global, atur REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT dari grup ketersediaan terdistribusi ke 1 menggunakan perintah ALTER AVAILABILITY GROUP.
  5. Pastikan semua replika dalam AG lokal dan grup ketersediaan terdistribusi berfungsi dengan baik dan pastikan grup ketersediaan terdistribusi SYNCHRONIZED.
  6. Pada replika utama global, atur peran grup ketersediaan terdistribusi ke SECONDARY, yang membuat grup ketersediaan terdistribusi tidak tersedia.
  7. Pada penerus (primer baru yang dimaksudkan), lakukan pemindahan grup ketersediaan yang terdistribusi menggunakan ALTER AVAILABILITY GROUP dengan FORCE_FAILOVER_ALLOW_DATA_LOSS.
  8. Pada replika sekunder baru (replika utama global sebelumnya), diatur grup ketersediaan terdistribusi REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT ke 0.
  9. Opsional: Jika grup ketersediaan berada di seluruh jarak geografis yang menyebabkan latensi, ubah mode ketersediaan menjadi ASYNCHRONOUS_COMMIT. Jika perlu, ini mengembalikan perubahan dari langkah pertama.

Contoh T-SQL

Bagian ini menyediakan langkah-langkah dalam contoh terperinci untuk melakukan failover pada grup ketersediaan terdistribusi bernama distributedAG dengan menggunakan Transact-SQL. Contoh lingkungan memiliki total 4 simpul untuk grup ketersediaan terdistribusi. Grup ketersediaan host utama global N1 dan N2 sementara grup ketersediaan host penerus ag1 dan N4. Grup ketersediaan terdistribusi distributedAG mendorong perubahan dari ag1 ke ag2.

  1. Kueri untuk memverifikasi SYNCHRONOUS_COMMIT pada utama grup ketersediaan lokal yang membentuk grup ketersediaan terdistribusi. Jalankan T-SQL berikut langsung di pengirim dan utama global:

    SELECT DISTINCT ag.name AS [Availability Group],
                    ar.replica_server_name AS [Replica],
                    ar.availability_mode_desc AS [Availability Mode]
    FROM sys.availability_replicas AS ar
         INNER JOIN
         sys.availability_groups AS ag
         ON ar.group_id = ag.group_id
         INNER JOIN
         sys.dm_hadr_database_replica_states AS rs
         ON ar.group_id = rs.group_id
            AND ar.replica_id = rs.replica_id
    WHERE ag.name IN ('ag1', 'ag2')
          AND rs.is_primary_replica = 1
    ORDER BY [Availability Group];
    --if needed, to set a given replica to SYNCHRONOUS for node N1, default instance. If named, change from N1 to something like N1\SQL22
    
    ALTER AVAILABILITY GROUP [testag] MODIFY REPLICA ON N'N1\SQL22' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    
  2. Atur grup ketersediaan terdistribusi ke komit sinkron dengan menjalankan kode berikut pada utama global dan forwarder:

     -- sets the distributed availability group to synchronous commit
     ALTER AVAILABILITY GROUP [distributedAG] MODIFY AVAILABILITY GROUP ON
     'ag1' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT),
     'ag2' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    

    Catatan

    Dalam grup ketersediaan terdistribusi, status sinkronisasi antara dua grup ketersediaan tergantung pada mode ketersediaan kedua replika. Untuk mode penerapan sinkron, grup ketersediaan utama saat ini dan grup ketersediaan sekunder saat ini harus memiliki SYNCHRONOUS_COMMIT mode ketersediaan. Untuk alasan ini, Anda harus menjalankan skrip ini pada replika utama global dan pengalih.

  3. Tunggu hingga status grup ketersediaan terdistribusi berubah menjadi SYNCHRONIZED. Jalankan kueri berikut pada primer global:

    -- Run this query on the Global Primary and the forwarder
    
    -- Check the results to see if synchronization_state_desc is SYNCHRONIZED
    SELECT ag.name,
           drs.database_id AS [Availability Group],
           db_name(drs.database_id) AS database_name,
           drs.synchronization_state_desc,
           drs.last_hardened_lsn
    FROM sys.dm_hadr_database_replica_states AS drs
         INNER JOIN
         sys.availability_groups AS ag
         ON drs.group_id = ag.group_id
    WHERE ag.name = 'distributedAG'
    ORDER BY [Availability Group];
    

    Lanjutkan setelah grup ketersediaan synchronization_state_descSYNCHRONIZED.

  4. Untuk SQL Server 2022 (16.x) dan yang lebih baru, pada primer global, atur REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT ke 1 dengan menggunakan T-SQL berikut:

    ALTER AVAILABILITY GROUP distributedAG SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
    
  5. Pastikan grup ketersediaan Anda sehat di semua replika dengan mengkueri utama global dan penerus:

    SELECT ag.name AS [AG Name],
           db_name(drs.database_id) AS database_name,
           ar.replica_server_name AS [replica],
           drs.synchronization_state_desc,
           drs.last_hardened_lsn
    FROM sys.dm_hadr_database_replica_states AS drs
         INNER JOIN
         sys.availability_groups AS ag
         ON drs.group_id = ag.group_id
         INNER JOIN
         sys.availability_replicas AS ar
         ON drs.replica_id = ar.replica_id
            AND drs.replica_id = ar.replica_id
    WHERE ag.name IN ('ag1', 'ag2', 'distributedAG');
    
  6. Pada primer global, atur peran grup ketersediaan terdistribusi ke SECONDARY. Pada titik ini, grup ketersediaan terdistribusi tidak tersedia. Setelah langkah ini selesai, Anda tidak dapat melakukan failback hingga langkah-langkah lainnya dilakukan.

    ALTER AVAILABILITY GROUP distributedAG SET (ROLE = SECONDARY);
    
  7. Failover dari primer global dengan menjalankan kueri berikut pada penerus untuk mentransisikan grup ketersediaan dan membuat grup ketersediaan terdistribusi kembali online:

    -- Run the following command on the forwarder, the SQL Server instance that hosts the primary replica of the secondary availability group.
    ALTER AVAILABILITY GROUP distributedAG FORCE_FAILOVER_ALLOW_DATA_LOSS;
    

    Setelah langkah ini:

    • Transisi utama global dari N1 ke N3.
    • Penerus beralih dari N3 ke N1.
    • Grup ketersediaan terdistribusi tersedia.
  8. Pada penerus baru (sebelumnya primer global, N1), hapus properti grup ketersediaan terdistribusi REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT dengan mengaturnya ke 0:

    ALTER AVAILABILITY GROUP distributedAG SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0);
    
  9. OPSIONAL : Jika grup ketersediaan berada di seluruh jarak geografis yang menyebabkan latensi, pertimbangkan untuk mengubah mode ketersediaan kembali ke ASYNCHRONOUS_COMMIT pada primer global dan penerus. Ini mengembalikan perubahan yang dilakukan pada langkah pertama, jika diperlukan.

     -- If applicable: sets the distributed availability group to asynchronous commit:
     ALTER AVAILABILITY GROUP distributedAG MODIFY AVAILABILITY GROUP ON
     'ag1' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT),
     'ag2' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT);
    

Menghapus grup ketersediaan terdistribusi

Pernyataan Transact-SQL berikut menghapus grup ketersediaan terdistribusi bernama distributedAG:

DROP AVAILABILITY GROUP distributedAG;

Membuat grup ketersediaan terdistribusi pada instans kluster failover

Anda dapat membuat grup ketersediaan terdistribusi menggunakan grup ketersediaan pada instans kluster failover (FCI). Dalam hal ini, Anda tidak memerlukan pendengar grup ketersediaan. Gunakan nama jaringan virtual (VNN) untuk replika utama instans FCI. Contoh berikut menunjukkan grup ketersediaan terdistribusi yang disebut SQLFCIDAG. Satu grup ketersediaan adalah SQLFCIAG. SQLFCIAG memiliki dua replika FCI. VNN untuk replika FCI utama adalah SQLFCIAG-1, dan VNN untuk replika FCI sekunder adalah SQLFCIAG-2. Grup ketersediaan terdistribusi juga mencakup SQLAG-DR, untuk pemulihan bencana.

Diagram grup ketersediaan terdistribusi AlwaysOn.

DDL berikut membuat grup ketersediaan terdistribusi ini:

CREATE AVAILABILITY GROUP [SQLFCIDAG]
   WITH (DISTRIBUTED)
   AVAILABILITY GROUP ON
  'SQLFCIAG' WITH
      (
         LISTENER_URL = 'tcp://SQLFCIAG-1.contoso.com:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = AUTOMATIC
      ),
  'SQLAG-DR' WITH
      (
         LISTENER_URL = 'tcp://SQLAG-DR.contoso.com:5022',
         AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
         FAILOVER_MODE = MANUAL,
         SEEDING_MODE = AUTOMATIC
      );

URL pendengar adalah VNN dari instans FCI utama.

Failover FCI secara manual dalam grup ketersediaan terdistribusi

Untuk melakukan failover secara manual pada grup ketersediaan FCI, perbarui grup ketersediaan terdistribusi untuk mencerminkan perubahan URL pendengar. Misalnya, jalankan DDL berikut pada primer global AG terdistribusi dan penerus AG terdistribusi SQLFCIDAG:

ALTER AVAILABILITY GROUP [SQLFCIDAG]
   MODIFY AVAILABILITY GROUP ON
 'SQLFCIAG' WITH
    (
        LISTENER_URL = 'tcp://SQLFCIAG-2.contoso.com:5022'
    )