Megosztás:


Az Always On elérhetőségi csoport olvasási skálázásának konfigurálása

A következőkre vonatkozik:SQL Server

Konfigurálhat egy SQL Server Always On rendelkezésre állási csoportot az olvasási skálázási számítási feladatokhoz Windows rendszeren. A rendelkezésre állási csoportok kétféle architektúratípust különböztetnek meg:

  • Magas rendelkezésre állású architektúra, amely a fürtkezelő segítségével biztosítja a jobb üzletmenet-folytonosságot, és olvasásra alkalmas másodlagos replikákat is tartalmazhat. A magas rendelkezésre állású architektúra létrehozásához lásd: Rendelkezésre állási csoportok létrehozása és konfigurálása Windows.
  • Olyan architektúra, amely csak olvasási skálázású számítási feladatokat támogat.

Ez a cikk bemutatja, hogyan hozhat létre rendelkezésre állási csoportot fürtkezelő nélkül olvasási skálázási számítási feladatokhoz. Ez az architektúra csak olvasási skálázást biztosít. Nem biztosít magas rendelkezésre állást.

Jegyzet

A CLUSTER_TYPE = NONE rendelkező rendelkezésre állási csoportok különböző operációsrendszer-platformokon üzemeltetett replikákat is tartalmazhatnak. Nem támogatja a magas rendelkezésre állást. A Linux operációs rendszerről lásd: Sql Server rendelkezésre állási csoport konfigurálása olvasási skálázáshoz Linux.

Előfeltételek

A rendelkezésre állási csoport létrehozása előtt a következőt kell elvégeznie:

  • Állítsa be a környezetet, hogy a rendelkezésre állási replikákat üzemeltető kiszolgálók kommunikálhassanak.
  • Telepítse az SQL Servert. A részletekért tekintse meg az SQL Server telepítési útmutatóját .

Always On rendelkezésre állási csoportok engedélyezése és az mssql-server újraindítása

Jegyzet

Az alábbi parancs a PowerShell-katalógusban közzétett sqlserver-modul parancsmagjait használja. Ezt a modult a Install-Module parancs használatával telepítheti.

Engedélyezze az Always On rendelkezésre állási csoportokat minden olyan replikán, amely SQL Server-példányt üzemeltet. Ezután indítsa újra az SQL Server szolgáltatást. Futtassa a következő parancsot az SQL Server-szolgáltatások engedélyezéséhez és újraindításához:

Enable-SqlAlwaysOn -ServerInstance <server\instance> -Force

AlwaysOn_health esemény munkamenetének engedélyezése

Ha segítségre van szüksége a rendelkezésre állási csoportok hibaelhárítása során felmerülő alapvető okok diagnosztizálásához, engedélyezheti az Always On rendelkezésre állási csoportok kiterjesztett eseményeinek (XEvents) munkamenetét. Ehhez futtassa a következő parancsot az SQL Server minden egyes példányán:

ALTER EVENT SESSION AlwaysOn_health ON SERVER WITH (STARTUP_STATE = ON);
GO

Az XEvents-munkamenetről további információt a Kiterjesztett események konfigurálása rendelkezésre állási csoportokhoz című témakörben talál.

Adatbázis-tükrözési végpont hitelesítése

Ahhoz, hogy a szinkronizálás megfelelően működjön, az olvasási szintű rendelkezésre állási csoportban részt vevő replikáknak hitelesíteni kell magukat a végponton keresztül. Az ilyen hitelesítéshez használható két fő forgatókönyvet a következő szakaszok ismertetik.

Szolgáltatásfiók

Olyan Active Directory-környezetben, ahol az összes másodlagos replika ugyanahhoz a tartományhoz csatlakozik, az SQL Server a szolgáltatásfiók használatával végezhet hitelesítést. Minden SQL Server-példányon explicit módon létre kell hoznia egy bejelentkezést a szolgáltatásfiókhoz:

CREATE LOGIN [<domain>\service account] FROM WINDOWS;

SQL-bejelentkezés hitelesítése

Olyan környezetekben, ahol a másodlagos replikák nem csatlakoznak Active Directory-tartományhoz, SQL-hitelesítést kell használnia. A következő Transact-SQL szkript létrehoz egy dbm_login nevű bejelentkezést és egy dbm_usernevű felhasználót. Cserélje le a <password> érvényes jelszóra. Az adatbázis-tükrözési végpont felhasználójának létrehozásához futtassa az alábbi parancsot az összes SQL Server-példányon.

CREATE LOGIN dbm_login WITH PASSWORD = '<password>';
CREATE USER dbm_user FOR LOGIN dbm_login;

Tanúsítványhitelesítés

Ha olyan másodlagos replikát használ, amely SQL-hitelesítést igényel, használjon tanúsítványt a tükrözési végpontok közötti hitelesítéshez.

Az alábbi Transact-SQL szkript létrehoz egy főkulcsot és egy tanúsítványt. Ezután biztonsági másolatot készít a tanúsítványról, és titkos kulccsal védi a fájlt. Frissítse a szkriptet erős jelszavakkal. Futtassa a szkriptet az elsődleges SQL Server-példányon a tanúsítvány létrehozásához:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<dmk-password>';
CREATE CERTIFICATE dbm_certificate WITH SUBJECT = 'dbm';

BACKUP CERTIFICATE dbm_certificate
TO FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.cer'
    WITH PRIVATE KEY (
        FILE = 'c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.pvk',
        ENCRYPTION BY PASSWORD = '<private-key-password>'
    );

Ezen a ponton az elsődleges SQL Server-replika rendelkezik egy tanúsítvánnyal c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.cer és egy titkos kulccsal a c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.pvk. Másolja ezt a két fájlt ugyanarra a helyre az összes olyan kiszolgálón, amely rendelkezésre állási replikákat fog üzemeltetni.

Minden másodlagos replikán győződjön meg arról, hogy az SQL Server-példány szolgáltatásfiókja rendelkezik a tanúsítvány eléréséhez szükséges engedélyekkel.

Tanúsítvány létrehozása másodlagos kiszolgálókon

Az alábbi Transact-SQL szkript létrehoz egy főkulcsot és egy tanúsítványt az elsődleges SQL Server-replikán létrehozott biztonsági másolatból. A parancs emellett engedélyezi a felhasználók számára a tanúsítvány elérését. Frissítse a szkriptet erős jelszavakkal. A visszafejtési jelszó ugyanaz a jelszó, amelyet az előző lépésben használt a .pvk fájl létrehozásához. A tanúsítvány létrehozásához futtassa a következő szkriptet az összes másodlagos replikán:

CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<dmk-password>';

CREATE CERTIFICATE dbm_certificate
    AUTHORIZATION dbm_user
    FROM FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.cer'
    WITH PRIVATE KEY (
        FILE = 'c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\dbm_certificate.pvk',
        DECRYPTION BY PASSWORD = '<private-key-password>'
    );

Adatbázis-tükrözési végpontok létrehozása az összes replikán

Az adatbázis-tükrözési végpontok a Transmission Control Protocol (TCP) használatával küldenek és fogadnak üzeneteket az adatbázis-tükrözési munkamenetekben vagy gazdagép rendelkezésre állási replikáiban részt vevő kiszolgálópéldányok között. Az adatbázis-tükrözési végpont egy egyedi TCP-portszámon figyel.

Az alábbi Transact-SQL szkript létrehoz egy Hadr_endpoint nevű figyelési végpontot a rendelkezésre állási csoport számára. Elindítja a végpontot, és megadja a kapcsolati engedélyt az előző lépésben létrehozott szolgáltatásfiókhoz vagy SQL-bejelentkezéshez. A szkript futtatása előtt cserélje le a < ... >közötti értékeket. Opcionálisan megadhat egy IP-címet, LISTENER_IP = (0.0.0.0). A figyelő IP-címének IPv4-címnek kell lennie. A 0.0.0.0is használható.

Frissítse az alábbi Transact-SQL szkriptet a környezetéhez az összes SQL Server-példányon:

CREATE ENDPOINT [Hadr_endpoint]
    AS TCP (LISTENER_PORT = **<5022>**)
    FOR DATABASE_MIRRORING (
        ROLE = ALL,
        AUTHENTICATION = CERTIFICATE dbm_certificate,
        ENCRYPTION = REQUIRED ALGORITHM AES
    );
ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED;
GRANT CONNECT ON ENDPOINT::[Hadr_endpoint] TO [<service account or user>];

A tűzfal TCP-portjának nyitva kell lennie a figyelőport számára.

További információ: Az adatbázis tükrözési végpontja (SQL Server).

Rendelkezésre állási csoport létrehozása

Hozzon létre egy rendelkezésre állási csoportot. CLUSTER_TYPE = NONEbeállítása. Emellett állítsa be az összes replikát FAILOVER_MODE = NONE-ra. Az elemzési vagy jelentéskészítési számítási feladatokat futtató ügyfélalkalmazások közvetlenül csatlakozhatnak a másodlagos adatbázisokhoz. Írásvédett útválasztási listát is létrehozhat. Az elsődleges replikával való kapcsolatok körkörös módon továbbítják az olvasási kapcsolatkéréseket a másodlagos replikáknak az útválasztási listából.

Az alábbi Transact-SQL szkript létrehoz egy ag1nevű rendelkezésre állási csoportot. A szkript a SEEDING_MODE = AUTOMATICsegítségével konfigurálja a rendelkezésre állási csoportok replikáit. Ez a beállítás azt eredményezi, hogy az SQL Server automatikusan létrehozza az adatbázist minden másodlagos kiszolgálón, miután hozzáadta azt a rendelkezésre állási csoporthoz.

Frissítse a következő szkriptet a környezetéhez. Cserélje le a <node1> és <node2> értékeket a replikákat üzemeltető SQL Server-példányok nevére. Cserélje le a <5022> értéket a végponthoz beállított portra. Futtassa a következő Transact-SQL szkriptet az elsődleges SQL Server-replikán:

CREATE AVAILABILITY GROUP [ag1]
    WITH (CLUSTER_TYPE = NONE)
    FOR REPLICA ON
        N'<node1>' WITH (
            ENDPOINT_URL = N'tcp://<node1>:<5022>',
		    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
		    FAILOVER_MODE = MANUAL,
		    SEEDING_MODE = AUTOMATIC,
                    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
		    ),
        N'<node2>' WITH (
		    ENDPOINT_URL = N'tcp://<node2>:<5022>',
		    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
		    FAILOVER_MODE = MANUAL,
		    SEEDING_MODE = AUTOMATIC,
		    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)
		    );

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

Másodlagos SQL Server-példányok csatlakoztatása a rendelkezésre állási csoporthoz

A következő Transact-SQL szkript csatlakozik egy kiszolgálóhoz egy ag1nevű rendelkezésre állási csoporthoz. Frissítse a környezet szkriptét. A rendelkezésre állási csoporthoz való csatlakozáshoz futtassa a következő Transact-SQL szkriptet minden másodlagos SQL Server-replikán:

ALTER AVAILABILITY GROUP [ag1] JOIN WITH (CLUSTER_TYPE = NONE);

ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE;

Adatbázis hozzáadása a rendelkezésre állási csoporthoz

Győződjön meg arról, hogy a rendelkezésre állási csoporthoz hozzáadott adatbázis a teljes helyreállítási modellben található, és érvényes napló biztonsági mentéssel rendelkezik. Ha az adatbázis tesztadatbázis vagy újonnan létrehozott adatbázis, készítsen biztonsági másolatot az adatbázisról. A db1nevű adatbázis létrehozásához és biztonsági mentéséhez futtassa a következő Transact-SQL szkriptet az elsődleges SQL Server-példányon:

CREATE DATABASE [db1];
ALTER DATABASE [db1] SET RECOVERY FULL;
BACKUP DATABASE [db1]
   TO DISK = N'c:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Backup\db1.bak';

Ha db1 nevű adatbázist szeretne hozzáadni egy ag1nevű rendelkezésre állási csoporthoz, futtassa a következő Transact-SQL szkriptet az elsődleges SQL Server-replikán:

ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [db1];

Ellenőrizze, hogy az adatbázis a másodlagos kiszolgálókon van-e létrehozva

Annak ellenőrzéséhez, hogy a db1 adatbázis létrejött-e és szinkronizálva van-e, futtassa a következő lekérdezést minden másodlagos SQL Server-replikán:

SELECT * FROM sys.databases WHERE name = 'db1';
GO
SELECT DB_NAME(database_id) AS 'database', synchronization_state_desc FROM sys.dm_hadr_database_replica_states;

Ez a rendelkezésre állási csoport nem magas rendelkezésre állású konfiguráció. Ha magas rendelkezésre állásra van szüksége, kövesse a SQL Serverhez készült Always On rendelkezésre állási csoport konfigurálása Linuxon vagy Rendelkezésre állási csoportok létrehozása és konfigurálása Windows alatt.

Csatlakozás írásvédett másodlagos replikákhoz

Az írásvédett másodlagos replikákhoz kétféleképpen csatlakozhat:

  • Az alkalmazások közvetlenül csatlakozhatnak a másodlagos replikát üzemeltető SQL Server-példányhoz, és lekérdezhetik az adatbázisokat. További részletekért lásd: Olvasható másodlagos replikák.
  • Az alkalmazások csak olvasható útválasztást is használhatnak, amihez egy figyelő szükséges. Ha egy olvasási skálázási forgatókönyvet fürtkezelő nélkül helyez üzembe, akkor is létrehozhat egy figyelőt, amely a jelenlegi elsődleges replika IP-címére mutat, és ugyanazon a porton figyel, amelyen az SQL Server. Át kell alakítania a figyelőt, hogy áttérés után az új elsődleges IP-címre mutasson. További információ a csak olvasható útválasztásról.

Az elsődleges replika átvitele egy olvasási méretű elérhetőségi csoportban.

Minden rendelkezésre állási csoport csak egy elsődleges replikával rendelkezik. Az elsődleges replika olvasást és írást tesz lehetővé. Az elsődleges replika módosításához feladatátvételt végezhet. Egy tipikus rendelkezésre állási csoportban a fürtkezelő automatizálja a feladatátvételi folyamatot. A NINCS típusú rendelkezésre állási csoportban a feladatátvételi folyamat manuális.

Egy rendelkezésre állási csoportban, ahol a fürt típusa NINCS, az elsődleges replika feladatátvitele kétféleképpen hajtható végre:

  • Manuális átkapcsolás adatvesztés nélkül
  • Kényszerített manuális átállás adatvesztéssel

Manuális átkapcsolás adatvesztés nélkül

Ezt a módszert akkor használja, ha az elsődleges replika elérhető, de ideiglenesen vagy véglegesen módosítania kell, hogy melyik példány tárolja az elsődleges replikát. A lehetséges adatvesztés elkerülése érdekében a manuális feladatátvétel elindítása előtt győződjön meg arról, hogy a cél másodlagos replika naprakész.

Manuális feladatátvétel adatvesztés nélkül:

  1. Tegye az aktuális elsődleges replikát másodlagos célreplikává SYNCHRONOUS_COMMIT.

    ALTER AVAILABILITY GROUP [AGRScale] 
         MODIFY REPLICA ON N'<node2>' 
         WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    
  2. Annak azonosításához, hogy az aktív tranzakciókat elkötelezték az elsődleges replika és legalább egy szinkron másodlagos replika részére, futtassa a következő lekérdezést:

    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; 
    

    A másodlagos replika akkor lesz szinkronizálva, ha synchronization_state_descSYNCHRONIZED.

  3. Frissítse a REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT 1-re.

    Az alábbi szkript beállítja REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT értékét 1-re egy ag1nevű rendelkezésre állási csoporton. A következő szkript futtatása előtt cserélje le ag1 a rendelkezésre állási csoport nevére:

    ALTER AVAILABILITY GROUP [AGRScale] 
         SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
    

    Ez a beállítás biztosítja, hogy minden aktív tranzakció az elsődleges replikához és legalább egy szinkron másodlagos replikához legyen lekötve.

    Jegyzet

    Ez a beállítás nem a feladatátvételre vonatkozik, és a környezet követelményeinek megfelelően kell beállítani.

  4. Állítsa be az elsődleges replikát és a másodlagos replikát, amely nem vesz részt a feladatátvételben offline állapotban, hogy felkészüljön a szerepkör módosítására:

    ALTER AVAILABILITY GROUP [AGRScale] OFFLINE
    
  5. A másodlagos célreplika előléptetése elsődlegesre.

    ALTER AVAILABILITY GROUP AGRScale FORCE_FAILOVER_ALLOW_DATA_LOSS; 
    
  6. Frissítse a régi elsődleges és más másodpéldányok szerepkörét SECONDARY, futtassa a következő parancsot a régi elsődleges replikát futtató SQL Server-példányon:

    ALTER AVAILABILITY GROUP [AGRScale] 
         SET (ROLE = SECONDARY); 
    

    Jegyzet

    Rendelkezésre állási csoport törléséhez használja a DROP AVAILABILITY GROUPparancsot. A NINCS vagy KÜLSŐ típusú fürttípussal létrehozott rendelkezésre állási csoport esetén hajtsa végre a parancsot a rendelkezésre állási csoport részét képező összes replikán.

  7. Folytassa az adatáthelyezést, futtassa a következő parancsot az elsődleges replikát üzemeltető SQL Server-példány rendelkezésre állási csoportjának összes adatbázisához:

    ALTER DATABASE [db1]
         SET HADR RESUME
    
  8. Hozzon létre újra minden olyan figyelőt, amelyet olvasási skálázás céljából hozott létre, és amelyet nem a fürtkezelő felügyel. Ha az eredeti figyelő a régi elsődlegesre mutat, távolítsa el, és hozza létre újra úgy, hogy az az új elsődlegesre mutasson.

Kényszerített manuális átállás adatvesztéssel

Ha az elsődleges replika nem érhető el, és nem állítható helyre azonnal, akkor kényszerítenie kell a feladatátvételt a másodlagos replikára, ami adatvesztéssel jár. Ha azonban az eredeti elsődleges replika helyreáll a feladatátvétel után, akkor az elsődleges szerepet fogja átvenni. Annak elkerülése érdekében, hogy minden replika más állapotban legyen, távolítsa el az eredeti elsődlegest a rendelkezésre állási csoportból egy adatvesztéssel járó kényszerített feladatátvétel után. Miután az eredeti elsődleges ismét online állapotba kerül, távolítsa el a rendelkezésre állási csoportot teljes egészében.

Ha az N1 elsődleges replikától a másodlagos N2 replika felé adatvesztéssel járó manuális feladatátvételt szeretne kényszeríteni, kövesse az alábbi lépéseket:

  1. A másodlagos replikán (N2) indítsa el a kényszerített feladatátvételt:

    ALTER AVAILABILITY GROUP [AGRScale] FORCE_FAILOVER_ALLOW_DATA_LOSS;
    
  2. Az új elsődleges replikán (N2) távolítsa el az eredeti elsődlegest (N1):

    ALTER AVAILABILITY GROUP [AGRScale]
    REMOVE REPLICA ON N'N1';
    
  3. Ellenőrizze, hogy az összes alkalmazásforgalom a figyelőre és/vagy az új elsődleges replikára van-e irányítva.

  4. Ha az eredeti elsődleges (N1) online állapotba kerül, azonnal vegye offline az AGRScale rendelkezésre állási csoportot az eredeti elsődleges (N1) szerveren.

    ALTER AVAILABILITY GROUP [AGRScale] OFFLINE
    
  5. Ha vannak adatok vagy nem aszinkron módosítások, őrizze meg ezeket az adatokat biztonsági másolatokkal vagy más, az üzleti igényeinek megfelelő adatreplikálási lehetőségekkel.

  6. Ezután távolítsa el a rendelkezésre állási csoportot az eredeti elsődlegesből (N1):

    DROP AVAILABILITY GROUP [AGRScale];
    
  7. A rendelkezésre állási csoport adatbázisának elvetése az eredeti elsődleges replikán (N1):

    USE [master]
    GO
    DROP DATABASE [AGDBRScale]
    GO
    
  8. (Nem kötelező) Ha szükséges, most már hozzáadhatja az N1-et új másodlagos replikaként az AGRScale rendelkezésre állási csoporthoz.

Vegye figyelembe, hogy ha figyelőt használ a csatlakozáshoz, a feladatátvétel végrehajtása után újra létre kell hoznia a figyelőt.

Következő lépések