Megosztás a következőn keresztül:


Elosztott Always On rendelkezésre állási csoport konfigurálása

A következőkre vonatkozik:SQL Server

Elosztott rendelkezésre állási csoport létrehozásához két rendelkezésre állási csoportot kell létrehoznia, mindegyiknek saját figyelővel kell rendelkeznie. Ezután ezeket a rendelkezésre állási csoportokat egy elosztott rendelkezésre állási csoportba kell egyesítenie. Az alábbi lépések egy egyszerű példát mutatnak be a Transact-SQL-ben. Ez a példa nem fedi le a rendelkezésre állási csoportok és a figyelők létrehozásának összes részletét; ehelyett a fő követelmények kiemelésére összpontosít.

Az elosztott rendelkezésre állási csoportok technikai áttekintését lásd: Elosztott rendelkezésre állási csoportok.

Előfeltételek

Elosztott rendelkezésre állási csoport konfigurálásához a következőkre van szükség:

Megjegyzés:

Ha elosztott hálózati névvel (DNN) konfigurálta a rendelkezésre állási csoport figyelőt az Azure-beli virtuális gépen futó SQL Serveren, akkor nem támogatott az elosztott rendelkezésre állási csoport konfigurálása a rendelkezésre állási csoport tetején. További információkért tekintse meg az Azure-beli virtuális gépeken futó SQL Server AG- és DNN-figyelővel való együttműködését.

Engedélyek

A kiszolgálón a rendelkezésre állási csoport létrehozásához CREATE AVAILABILITY GROUP jogosultság szükséges, és az elosztott rendelkezésre állási csoport feladatátvételéhez sysadmin jogosultság szükséges.

Az adatbázis tükrözési végpontjának beállítása az összes IP-cím figyelésére

Győződjön meg arról, hogy az adatbázis tükrözési végpontjai képesek kommunikálni az elosztott rendelkezésre állási csoport különböző rendelkezésre állási csoportjai között. Ha egy rendelkezésre állási csoport egy adott hálózatra van beállítva az adatbázis tükrözési végpontján, az elosztott rendelkezésre állási csoport nem működik megfelelően. Az elosztott rendelkezésre állási csoportban replikát üzemeltető kiszolgálókon állítsa be az adatbázis-tükrözési végpontot az összes IP-cím figyelésére (LISTENER_IP = ALL).

Adatbázistükrözési végpont létrehozása az összes IP-cím figyeléséhez

Az alábbi szkript például létrehoz egy új adatbázistükrözési végpontot az 5022-s TCP-porton, amely az összes IP-címet figyeli.

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

Meglévő adatbázistükrözési végpont módosítása az összes IP-cím figyeléséhez

Az alábbi szkript például módosít egy meglévő adatbázistükrözési végpontot az összes IP-cím figyeléséhez.

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

Első rendelkezésre állási csoport létrehozása

Hozza létre az elsődleges rendelkezésre állási csoportot az első fürtön

Hozzon létre egy rendelkezésre állási csoportot az első Windows Server Failover Clusteren (WSFC). Ebben a példában a rendelkezésre állási csoport neve ag1, az adatbázis db1 esetében. Az elsődleges rendelkezésre állási csoport elsődleges replikája globális elsődlegesként ismert egy elosztott rendelkezésre állási csoportban. Ebben a példában a Server1 a globális elsődleges.

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

Megjegyzés:

Az előző példa az automatikus adatbetöltést használja, ahol SEEDING_MODEAUTOMATIC értékre van állítva mind a replikák, mind az elosztott rendelkezésre állási csoport esetében. Ez a konfiguráció beállítja, hogy a másodlagos replikák és a másodlagos rendelkezésre állási csoport automatikusan fel legyen töltve anélkül, hogy manuális biztonsági mentésre és az elsődleges adatbázis visszaállítására lenne szükség.

A másodlagos replikák csatlakoztatása az elsődleges rendelkezésre állási csoporthoz

A másodlagos replikákat az ALTER AVAILABILITY GROUP beállítással kell csatlakoztatni a rendelkezésre állási csoporthoz a JOIN beállítással. Mivel ebben a példában automatikus magonzást használunk, az ALTER AVAILABILITY GROUP is meg kell hívnia a GRANT CREATE ANY DATABASE beállítással. Ezzel a beállítással a rendelkezésre állási csoport létrehozhatja az adatbázist, és automatikusan megkezdheti az elsődleges replikából való üzembe helyezését.

Ebben a példában a következő parancsok futnak a másodlagos replikán a server2rendelkezésre állási ag1 csoporthoz való csatlakozáshoz. A rendelkezésre állási csoport ezután engedélyezi az adatbázisok létrehozását a másodlagos példányon.

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

Megjegyzés:

Amikor a rendelkezésre állási csoport létrehoz egy adatbázist egy másodlagos replikán, az adatbázis tulajdonosát állítja be az utasítást futtató ALTER AVAILABILITY GROUP fiókként, amely engedélyt ad bármilyen adatbázis létrehozására. További információ: Adatbázis-létrehozási engedély megadása másodlagos replikán a rendelkezésre állási csoport számára.

Figyelő létrehozása az elsődleges rendelkezésre állási csoporthoz

Ezután adjon hozzá egy figyelőt az első WSFC elsődleges rendelkezésre állási csoportjához. Ebben a példában a figyelő neve ag1-listener. A figyelők létrehozásával kapcsolatos részletes utasításokért lásd: Rendelkezésreállási csoport figyelőjének (SQL Server) létrehozása vagy konfigurálása.

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

Második rendelkezésre állási csoport létrehozása

Ezután a második WSFC-n hozzon létre egy második rendelkezésre állási csoportot. ag2 Ebben az esetben az adatbázis nincs megadva, mert az automatikusan az elsődleges rendelkezésre állási csoportból lesz beállítva. Az elosztott rendelkezésre állási csoportban a másodlagos rendelkezésre állási csoport elsődleges replikáját továbbítónak nevezik. Ebben a példában a kiszolgáló3 a továbbító.

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

Megjegyzés:

  • A másodlagos rendelkezésre állási csoportnak ugyanazt az adatbázis-tükrözési végpontot kell használnia (ebben a példában az 5022-s portot). Ellenkező esetben a replikáció leáll egy helyi feladatátvétel után.
  • A mögöttes rendelkezésre állási csoportoknak ugyanabban a rendelkezésre állási módban kell lenniük – vagy mindkét rendelkezésre állási csoportnak szinkron véglegesítési módban kell lennie, vagy mindkettőnek aszinkron véglegesítési módban kell lennie. Ha nem biztos benne, hogy melyiket használja, állítsa mindkettőt aszinkron véglegesítési módra, amíg készen nem áll a feladatátvételre.

A másodlagos replikák csatlakoztatása a másodlagos rendelkezésre állási csoporthoz

Ebben a példában a következő parancsok futnak a másodlagos replikán a server4rendelkezésre állási ag2 csoporthoz való csatlakozáshoz. A rendelkezésre állási csoport ezután létrehozhat adatbázisokat a másodlagos helyen az automatikus vetés támogatásához.

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

Készítsen figyelőt a másodlagos rendelkezésre állási csoport számára

Ezután adjon hozzá egy figyelőt a másodlagos rendelkezésre állási csoporthoz a második WSFC-n. Ebben a példában a figyelő neve ag2-listener. A figyelők létrehozásával kapcsolatos részletes utasításokért lásd: Rendelkezésreállási csoport figyelőjének (SQL Server) létrehozása vagy konfigurálása.

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

Elosztott rendelkezésre állási csoport létrehozása az első klaszteren

Az első WSFC-n hozzon létre egy elosztott rendelkezésre állási csoportot (ebben a példában).distributedAG Használja a CREATE AVAILABILITY GROUP parancsot az ELOSZTOTT beállítással. A RENDELKEZÉSRE ÁLLÁSI CSOPORT paraméter meghatározza a tagok rendelkezésre állási csoportjait ag1 és ag2.

Ha automatikus vetéssel szeretné létrehozni az elosztott rendelkezésre állási csoportot, használja a következő Transact-SQL kódot:

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

Megjegyzés:

A LISTENER_URL meghatározza az egyes rendelkezésre állási csoportok figyelőit, valamint a rendelkezésre állási csoport adatbázis-tükrözési végpontját. Ebben a példában ez a port 5022 (nem a figyelő létrehozásához használt port 60173 ). Ha terheléselosztót használ, például az Azure-ban, adjon hozzá egy terheléselosztási szabályt az elosztott rendelkezésre állási csoport portjához. Adja hozzá a figyelőport szabályát az SQL Server-példányport mellett.

Automatikus küldés törlése az átirányítónak

Ha bármilyen okból szükségessé válik a továbbító inicializálásának megszüntetése a két rendelkezésre állási csoport szinkronizálása előtt , módosítsa az elosztott rendelkezésre állási csoportot úgy, hogy a továbbító SEEDING_MODE paraméterét MANUÁLIS értékre állítja, és azonnal megszakítja a vetést. Futtassa a parancsot a globális fő példányon:

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

Elosztott rendelkezésre állási csoport csatlakoztatása a második fürthöz

Ezután csatlakozzon az elosztott rendelkezésre állási csoporthoz a második WSFC-n.

Ha automatikus vetéssel szeretne csatlakozni az elosztott rendelkezésre állási csoporthoz, használja a következő Transact-SQL kódot:

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

Csatlakozás az adatbázishoz a második rendelkezésre állási csoport másodlagos részén

Ha a második rendelkezésre állási csoport automatikus vetés használatára lett beállítva, lépjen a 2. lépésre.

  1. Ha a második rendelkezésre állási csoport manuális vetést használ, akkor állítsa vissza a globális elsődleges rendszeren készített biztonsági másolatot a második rendelkezésre állási csoport másodlagos rendszerére.

    RESTORE DATABASE [db1] FROM DISK = '<full backup location>'
        WITH NORECOVERY;
    
    RESTORE LOG [db1] FROM DISK = '<log backup location>'
        WITH NORECOVERY;
    
  2. Miután a második rendelkezésre állási csoport másodlagos replikáján lévő adatbázis visszaállítási állapotban van, manuálisan kell csatlakoznia a rendelkezésre állási csoporthoz.

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

Elosztott rendelkezésre állási csoport feladatátvétele

Mivel az SQL Server 2022 (16.x) bevezette az elosztott rendelkezésre állási csoport támogatását a REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT beállításhoz, az elosztott rendelkezésre állás feladatátvételére vonatkozó utasítások eltérnek az SQL Server 2022-ben és újabb verzióiban, mint az SQL Server 2019-ben és a korábbi verziókban.

Elosztott rendelkezésre állási csoport esetén az egyetlen támogatott feladatátvételi típus egy manuális, felhasználó által kezdeményezett FORCE_FAILOVER_ALLOW_DATA_LOSS. Ezért az adatvesztés megakadályozása érdekében további lépéseket kell tennie (ebben a szakaszban részletesen ismertetjük), hogy a feladatátvétel megkezdése előtt az adatok szinkronizálva legyenek a két replika között.

Olyan vészhelyzet esetén, amikor az adatvesztés elfogadható, a következő futtatásával kezdeményezhet feladatátvételt az adatszinkronizálás biztosítása nélkül:

ALTER AVAILABILITY GROUP distributedAG FORCE_FAILOVER_ALLOW_DATA_LOSS;

Ugyanezzel a paranccsal feladatátvételt végezhet a továbbítónak, valamint visszaléphet a globális elsődleges helyre.

Az SQL Server 2022 -ben (16.x) és újabb verziókban konfigurálhatja az REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT elosztott rendelkezésre állási csoport beállításait, amelyek úgy lettek kialakítva, hogy ne legyen adatvesztés, ha egy elosztott rendelkezésre állási csoport meghibásodik. Ha ez a beállítás konfigurálva van, kövesse az ebben a szakaszban leírt lépéseket az elosztott rendelkezésre állási csoport feladatátvételéhez. Ha nem szeretné használni a REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT beállítást, kövesse az utasításokat egy elosztott rendelkezésre állási csoport feladatátvételéhez az SQL Server 2019-ben és korábbi verzióiban.

Megjegyzés:

Az 1 értékre állítás REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT azt jelenti, hogy az elsődleges replika megvárja, amíg a másodlagos replikán véglegesítik a tranzakciókat, mielőtt az elsődleges replikán véglegesítik őket, ami csökkentheti a teljesítményt. Bár nem szükséges a globális elsődleges szerveren a tranzakciók korlátozása vagy leállítása ahhoz, hogy az elosztott rendelkezésre állási csoport szinkronizálódjon az SQL Server 2022-ben (16.x), ezt megtenni javíthatja a teljesítményt mind a felhasználói tranzakciók, mind az elosztott rendelkezésre állási csoport szinkronizálása során, ha a REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT értéke 1.

Az adatvesztés hiányának biztosításához szükséges lépések

Annak érdekében, hogy ne legyen adatvesztés, először konfigurálnia kell az elosztott rendelkezésre állási csoportot úgy, hogy az ne támogassa az adatvesztést az alábbi lépések végrehajtásával:

  1. A feladatátvételre való felkészüléshez ellenőrizze, hogy a globális elsődleges és továbbító SYNCHRONOUS_COMMIT üzemmódban vannak. Ha nem, állítsa be őket az SYNCHRONOUS_COMMITALTER AVAILABILITY GROUP parancson keresztül.
  2. Állítsa be az elosztott rendelkezésre állási csoportot szinkron elköteleződésre mind a globális elsődlegesre, mind a továbbítóra.
  3. Várja meg, amíg az elosztott rendelkezésre állási csoport szinkronizálódik.
  4. A globális elsődlegesen állítsa az elosztott rendelkezésre állási csoport REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT beállítását 1-re az ALTER AVAILABILITY GROUP használatával.
  5. Ellenőrizze, hogy a helyi AG-k és az elosztott rendelkezésre állási csoport összes replikája kifogástalan állapotban van-e, és hogy az elosztott rendelkezésre állási csoport SZINKRONIZÁLVA van-e.
  6. A globális elsődleges replikán állítsa be az elosztott rendelkezésre állási csoport szerepkört SECONDARY, amely elérhetetlenné teszi az elosztott rendelkezésre állási csoportot.
  7. Az átállítón (a tervezett új elsődlegesen) hajtsa végre az elosztott rendelkezésre állási csoport átváltását az ALTER AVAILABILITY GROUP a FORCE_FAILOVER_ALLOW_DATA_LOSS segítségével.
  8. Az új másodlagos (az előző globális elsődleges replikán) állítsa az elosztott rendelkezésre állási csoportot REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT 0-ra.
  9. Nem kötelező: Ha a rendelkezésre állási csoportok olyan földrajzi távolságon vannak, amely késést okoz, módosítsa a rendelkezésre állási módot a következőre ASYNCHRONOUS_COMMIT: . Ez szükség esetén visszaállítja a módosítást az első lépésről.

T-SQL-példa

Ez a szakasz részletes példában ismerteti a Transact-SQL használatával elnevezett distributedAG elosztott rendelkezésre állási csoport feladatátvételének lépéseit. A példakörnyezetben összesen 4 csomópont található az elosztott rendelkezésre állási csoporthoz. A globális elsődleges N1 és N2 gazdagép rendelkezésre állási csoportja ag1 , míg a továbbító N3 és N4 gazdagép rendelkezésre állási csoportja ag2. Az elosztott rendelkezésre állási csoport distributedAG továbbítja a módosításokat ag1-ből ag2-be.

  1. Lekérdezés az elosztott rendelkezésre állási csoportot alkotó helyi rendelkezésre állási csoportok elsődlegességeinek ellenőrzéséhez SYNCHRONOUS_COMMIT . Futtassa a következő T-SQL-t közvetlenül a továbbító és a globális elsődleges kiszolgálón:

    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. Állítsa be az elosztott rendelkezésre állási csoportot szinkron véglegesítésre, a következő kódot futtatva mind a globális elsődlegesen, mind a továbbítón:

     -- 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);
    

    Megjegyzés:

    Elosztott rendelkezésre állási csoportban a két rendelkezésre állási csoport közötti szinkronizálás állapota a két replika rendelkezésre állási módjától függ. Szinkron véglegesítési mód esetén az aktuális elsődleges rendelkezésre állási csoportnak és az aktuális másodlagos rendelkezésre állási csoportnak is rendelkezésre állási móddal kell rendelkeznie SYNCHRONOUS_COMMIT . Ezért ezt a szkriptet a globális elsődleges replikán és a továbbítón is futtatnia kell.

  3. Várjon, amíg az elosztott rendelkezésre állási csoport állapota megváltozik SYNCHRONIZED. Futtassa a következő lekérdezést a globális elsődlegesen:

    -- Run this query on the Global Primary
    
    -- 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];
    

    Folytassa, amikor a rendelkezésre állási csoport synchronization_state_descSYNCHRONIZED állapotban van.

  4. Az SQL Server 2022 (16.x) és újabb verziói esetén a globális elsődleges kiszolgálón az alábbi T-SQL használatával állítsa az REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT 1 értéket:

    ALTER AVAILABILITY GROUP distributedAG SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
    
  5. A globális elsődleges és a továbbító lekérdezésével ellenőrizze, hogy a rendelkezésre állási csoportok kifogástalan állapotban vannak-e az összes replikán:

    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. A globális elsődlegesen állítsa be az elosztott rendelkezésre állási csoport szerepkörét a következőre: SECONDARY. Jelenleg az elosztott rendelkezésre állási csoport nem érhető el. A lépés befejezése után a többi lépés végrehajtásáig nem lehet visszalépni.

    ALTER AVAILABILITY GROUP distributedAG SET (ROLE = SECONDARY);
    
  7. A globális elsődleges vezérlés átváltásához futtassa a következő lekérdezést a továbbítón, hogy átválthassa a rendelkezésre állási csoportokat és újra online állapotba hozhassa az elosztott rendelkezésre állási csoportot.

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

    A lépés után:

    • A globális elsődleges áttűnés N1-ről N3-re.
    • A továbbító átvált N3-ról N1-re.
    • Az elosztott rendelkezésre állási csoport elérhető.
  8. Az új továbbítónál (korábbi globális elsődleges N1) törölje az elosztott rendelkezésre állási csoport tulajdonságát REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT 0 értékre állítással:

    ALTER AVAILABILITY GROUP distributedAG SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 0);
    
  9. NEM KÖTELEZŐ: Ha a rendelkezésre állási csoportok olyan földrajzi távolságon vannak, amely késést okoz, fontolja meg a rendelkezésre állási mód visszaállítását ASYNCHRONOUS_COMMIT mind a globális elsődleges, mind a továbbító számára. Ez visszaállítja az első lépésben végrehajtott módosítást, ha szükséges.

     -- 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);
    

Elosztott rendelkezésre állási csoport eltávolítása

Az alábbi Transact-SQL utasítás eltávolít egy elosztott rendelkezésre állási csoportot distributedAG:

DROP AVAILABILITY GROUP distributedAG;

Elosztott rendelkezésre állási csoport létrehozása kiesés esetére kialakított fürtpéldányokon

Elosztott rendelkezésre állási csoportot egy feladatátvevő fürtpéldány (FCI) rendelkezésre állási csoportjával hozhat létre. Ebben az esetben nincs szükség rendelkezésre állási csoport figyelőre. Használja a virtuális hálózat nevét (VNN) az FCI-példány elsődleges replikájához. Az alábbi példa egy SQLFCIDAG nevű elosztott rendelkezésre állási csoportot mutat be. Az egyik rendelkezésre állási csoport az SQLFCIAG. Az SQLFCIAG két FCI-replikával rendelkezik. Az elsődleges FCI-replika VNN-je az SQLFCIAG-1, a másodlagos FCI-replika VNN-je pedig AZ SQLFCIAG-2. Az elosztott rendelkezésre állási csoport az SQLAG-DR-t is tartalmazza a vészhelyreállításhoz.

Always On elosztott rendelkezésre állási csoport ábrája.

Az alábbi DDL hozza létre ezt az elosztott rendelkezésre állási csoportot:

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
      );

A figyelő URL-címe az elsődleges FCI-példány VNN-je.

FcI manuális feladatátvétele elosztott rendelkezésre állási csoportban

Az FCI rendelkezésre állási csoport manuális feladatátvételéhez frissítse az elosztott rendelkezésre állási csoportot, hogy az tükrözze a figyelő URL-címének változását. Futtassa például a következő DDL-t mind az elosztott rendelkezésre állási csoport (AG) globális elsődleges példányán, mind az SQLFCIDAG elosztott AG továbbító példányán is:

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