Rendelkezésre állási csoport létrehozása és konfigurálása linuxos SQL Serverhez

A következőkre vonatkozik:SQL Server Linux rendszeren

Ez az oktatóanyag bemutatja, hogyan hozhat létre és konfigurálhat rendelkezésre állási csoportot (AG) linuxos SQL Serverhez. A Windows rendszeren futó SQL Server 2016 (13.x) és a korábbi verziókkal ellentétben engedélyezheti az AG-t a mögöttes Pacemaker-fürt létrehozása nélkül vagy annak létrehozásával is. A fürttel való integráció, ha szükséges, később történik.

Az oktatóanyag a következő feladatokat tartalmazza:

  • Rendelkezésre állási csoportok engedélyezése.
  • Rendelkezésre állási csoport végpontjai és tanúsítványai létrehozása.
  • Az SQL Server Management Studio (SSMS) vagy Transact-SQL használatával hozzon létre egy rendelkezésre állási csoportot.
  • Hozza létre az SQL Server bejelentkezési adatait és engedélyeit a Pacemakerhez.
  • Készítsen rendelkezésre állási csoport erőforrásokat egy Pacemaker-klaszterben (csak külső típusú esetén).

Prerequisites

Telepítsd a Pacemaker magas rendelkezésre állási klaszterét. További információért lásd a következőt: Pacemaker-fürt üzembe helyezése SQL Serverhez Linuxon.

A rendelkezésre állási csoportok funkció engedélyezése

A Windowstól eltérően a PowerShell vagy az SQL Server Konfigurációkezelő nem használható a rendelkezésre állási csoportok (AG) funkció engedélyezésére. Linuxon kétféleképpen engedélyezheti a rendelkezésre állási csoportok funkciót: használhatja a mssql-conf segédprogramot, vagy manuálisan szerkesztheti a mssql.conf fájlt.

Important

Az AG szolgáltatást csak konfigurációs replikákhoz kell engedélyeznie, még az SQL Server Expressen is.

Használd a segédeszközt mssql-conf

Egy parancssorban futtassa a következő parancsot:

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1

Az mssql.conf fájl szerkesztése

A mssql.conf mappában található /var/opt/mssql fájlt is módosíthatja. Adja hozzá a következő sorokat:

[hadr]

hadr.hadrenabled = 1

Az SQL Server újraindítása

A rendelkezésre állási csoportok engedélyezése után újra kell indítania az SQL Servert. Használja a következő parancsot:

sudo systemctl restart mssql-server

A rendelkezésre állási csoport végpontjai és tanúsítványai létrehozása

A rendelkezésre állási csoportok TCP-végpontokat használnak a kommunikációhoz. Linux alatt az SQL Server csak akkor támogatja az AG végpontjait, ha hitelesítéshez tanúsítványokat használ. Vissza kell állítania a tanúsítványt arról az egyetlen példányról, amely a többi, ugyanazon AG-ben replikaként részt vevő példány számára szolgál. A tanúsítványfolyamatra még egy csak konfigurációs replikához is szükség van.

Végpontokat csak a Transact-SQL használatával lehet létrehozni és tanúsítványokat visszaállítani. Nem SQL Server által létrehozott tanúsítványokat is használhat. Egy folyamatra is szüksége van a lejárt tanúsítványok kezeléséhez és cseréjéhez.

Important

Ha az SQL Server Management Studio varázslóval szeretné létrehozni az AG-t, akkor is létre kell hoznia és vissza kell állítania a tanúsítványokat a Linuxon futó Transact-SQL használatával.

A különböző parancsok (beleértve a biztonsági beállításokat) teljes szintaxisát lásd:

Note

Bár rendelkezésre állási csoportot hoz létre, a végpont típusa a(z) FOR DATABASE_MIRRORING elemet használja, mert a végpont típusa közös alapokra épül azzal a mára elavult funkcióval.

Ez a példa három csomópontos konfigurációhoz hoz létre tanúsítványokat. A példányok neve LinAGN1, LinAGN2és LinAGN3.

  1. Hajtsa végre a következő szkriptet a LinAGN1 a főkulcs, a tanúsítvány és a végpont létrehozásához, valamint a tanúsítvány biztonsági mentéséhez. Ebben a példában a végpont a tipikus TCP 5022-es portot használja.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';
    GO
    
    CREATE CERTIFICATE LinAGN1_Cert
    WITH SUBJECT = 'LinAGN1 AG Certificate';
    GO
    
    BACKUP CERTIFICATE LinAGN1_Cert
    TO FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer';
    GO
    
    CREATE ENDPOINT AGEP
    STATE = STARTED
    AS TCP
    (
        LISTENER_PORT = 5022,
        LISTENER_IP = ALL
    )
    FOR DATABASE_MIRRORING
    (
        AUTHENTICATION = CERTIFICATE LinAGN1_Cert,
        ROLE = ALL
    );
    GO
    
  2. Végezze el ugyanezt a LinAGN2-n.

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';
    GO
    
    CREATE CERTIFICATE LinAGN2_Cert
    WITH SUBJECT = 'LinAGN2 AG Certificate';
    GO
    
    BACKUP CERTIFICATE LinAGN2_Cert
    TO FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer';
    GO
    
    CREATE ENDPOINT AGEP
    STATE = STARTED
    AS TCP
    (
        LISTENER_PORT = 5022,
        LISTENER_IP = ALL
    )
    FOR DATABASE_MIRRORING
    (
        AUTHENTICATION = CERTIFICATE LinAGN2_Cert,
        ROLE = ALL
    );
    GO
    
  3. Végül hajtsa végre ugyanezt a sorozatot LinAGN3:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>';
    GO
    
    CREATE CERTIFICATE LinAGN3_Cert
    WITH SUBJECT = 'LinAGN3 AG Certificate';
    GO
    
    BACKUP CERTIFICATE LinAGN3_Cert
    TO FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer';
    GO
    
    CREATE ENDPOINT AGEP
    STATE = STARTED
    AS TCP
    (
        LISTENER_PORT = 5022,
        LISTENER_IP = ALL
    )
    FOR DATABASE_MIRRORING
    (
        AUTHENTICATION = CERTIFICATE LinAGN3_Cert,
        ROLE = ALL
    );
    GO
    
  4. Használj scp vagy más segédeszközt, hogy a tanúsítvány biztonsági mentéseit másold minden olyan csomópontra, amelynek tagja szeretnél az AG-nek.

    Ebben a példában:

    • Másolja az LinAGN1_Cert.cer-t LinAGN2-re és LinAGN3-re.
    • Másolja az LinAGN2_Cert.cer-t LinAGN1-re és LinAGN3-re.
    • Másolja az LinAGN3_Cert.cer-t LinAGN1-re és LinAGN2-re.
  5. Módosítsa a másolt tanúsítványfájlokhoz társított csoport és tulajdonos beállításait mssql-ra.

    sudo chown mssql:mssql <CertFileName>
    
  6. Hozza létre az példányszintű bejelentkezéseket és a LinAGN2-val és LinAGN3-gyel társított felhasználókat a LinAGN1-n.

    CREATE LOGIN LinAGN2_Login
    WITH PASSWORD = '<password>';
    
    CREATE USER LinAGN2_User
    FOR LOGIN LinAGN2_Login;
    GO
    
    CREATE LOGIN LinAGN3_Login
    WITH PASSWORD = '<password>';
    
    CREATE USER LinAGN3_User
    FOR LOGIN LinAGN3_Login;
    GO
    

    Caution

    A jelszónak az SQL Server alapértelmezett password szabályzatot kell követnie. Alapértelmezés szerint a jelszónak legalább nyolc karakter hosszúnak kell lennie, és a következő négy készletből három karakterből kell állnia: nagybetűk, kisbetűk, 10 számjegyből és szimbólumokból. A jelszavak legfeljebb 128 karakter hosszúak lehetnek. Használjon olyan jelszavakat, amelyek a lehető legkomplexebbek és hosszúak.

  7. Állítsa vissza LinAGN2_Cert és LinAGN3_Cert a LinAGN1. A többi replika tanúsítványai elengedhetetlenek az AG kommunikációjához és biztonságához.

    CREATE CERTIFICATE LinAGN2_Cert
        AUTHORIZATION LinAGN2_User
        FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer';
    GO
    
    CREATE CERTIFICATE LinAGN3_Cert
        AUTHORIZATION LinAGN3_User
        FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer';
    GO
    
  8. Engedélyezze a LinAGN2 és LinAGN3 bejelentkezéseit, hogy csatlakozhassanak a LinAGN1végponthoz.

    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login;
    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;
    
  9. Hozza létre az példányszintű bejelentkezéseket és a LinAGN1-val és LinAGN3-gyel társított felhasználókat a LinAGN2-n.

    CREATE LOGIN LinAGN1_Login
    WITH PASSWORD = '<password>';
    
    CREATE USER LinAGN1_User
    FOR LOGIN LinAGN1_Login;
    GO
    
    CREATE LOGIN LinAGN3_Login
    WITH PASSWORD = '<password>';
    
    CREATE USER LinAGN3_User
    FOR LOGIN LinAGN3_Login;
    GO
    
  10. Állítsa vissza LinAGN1_Cert és LinAGN3_Cert a LinAGN2.

    CREATE CERTIFICATE LinAGN1_Cert
        AUTHORIZATION LinAGN1_User
        FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer';
    GO
    
    CREATE CERTIFICATE LinAGN3_Cert
        AUTHORIZATION LinAGN3_User
        FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer';
    GO
    
  11. Engedélyezze a LinAGN1 és LinAGN3 bejelentkezéseit, hogy csatlakozhassanak a LinAGN2végponthoz.

    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login;
    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;
    GO
    
  12. Hozza létre az példányszintű bejelentkezéseket és a LinAGN1-val és LinAGN2-gyel társított felhasználókat a LinAGN3-n.

    CREATE LOGIN LinAGN1_Login
    WITH PASSWORD = '<password>';
    
    CREATE USER LinAGN1_User
    FOR LOGIN LinAGN1_Login;
    GO
    
    CREATE LOGIN LinAGN2_Login
    WITH PASSWORD = '<password>';
    
    CREATE USER LinAGN2_User
    FOR LOGIN LinAGN2_Login;
    GO
    
  13. Állítsa vissza LinAGN1_Cert és LinAGN2_Cert a LinAGN3.

    CREATE CERTIFICATE LinAGN1_Cert
        AUTHORIZATION LinAGN1_User
        FROM FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer';
    GO
    
    CREATE CERTIFICATE LinAGN2_Cert
        AUTHORIZATION LinAGN2_User
        FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer';
    GO
    
  14. Engedélyezze a LinAGN1 és LinAGN2 bejelentkezéseit, hogy csatlakozhassanak a LinAGN3végponthoz.

    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login;
    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login;
    GO
    

A rendelkezésre állási csoport létrehozása

Ez a szakasz bemutatja, hogyan használható az SQL Server Management Studio (SSMS) vagy Transact-SQL az SQL Server rendelkezésre állási csoportjának létrehozásához.

Az SQL Server Management Studio használata

Ez a szakasz bemutatja, hogyan hozhat létre Külső klasztertípusú AG-t az SSMS Új rendelkezésre állási csoport varázslójával.

  1. Az SSMS-ben bontsa ki Mindig magas rendelkezésre állásúelemet, kattintson a jobb gombbal a Rendelkezésre állási csoportokelemre, és válassza Új rendelkezésreállási csoport varázslólehetőséget.

  2. A Bevezetés párbeszédben válaszd a Következőt.

  3. A Rendelkezésre állási csoport beállításainak megadása párbeszédpanelen adja meg az AG nevét, és válasszon egy fürt típusát EXTERNAL vagy NONE a legördülő listából. A Pacemaker üzembe helyezésekor használható EXTERNAL . Speciális forgatókönyvekhez, például olvasási felskálázáshoz használható NONE . Az adatbázisszintű állapotészlelés beállításának megadása nem kötelező. Erről a beállításról további információt a Rendelkezésre állási csoport adatbázisszintű állapotészlelési feladatátvételi lehetőségében talál. Válassza a Tovább gombot.

    Fürttípust ábrázoló képernyőkép a rendelkezésre állási csoport létrehozásáról.

  4. Az Adatbázisok kiválasztása párbeszédben válaszd ki azokat az adatbázisokat, amelyekben részt szeretnél venni az AG-ben. Minden adatbázisnak teljes biztonsági mentéssel kell rendelkeznie ahhoz, hogy hozzáadhassa azt egy AG-hez. Válassza a Tovább gombot.

  5. A Replikák megadása párbeszédben válaszd a Replika hozzáadását.

  6. A Csatlakozás a szerverhez párbeszédben írja be a SQL Server Linux példányának nevét a másodlagos replikához, valamint a csatlakozáshoz szükséges hitelesítő adatokat. Válassza a Csatlakozás lehetőséget.

  7. Ismételje meg az előző két lépést azon példány esetében, amely csak konfigurációs replikát vagy egy másik másodlagos replikát fog tartalmazni.

  8. Mindhárom példány megjelenik a Replikák megadása párbeszédben. Ha klaszter típusú külső rendszert használsz, akkor a valódi másodlagos replika esetén győződj meg róla, hogy a rendelkezésre állási mód egyezik az elsődleges replikáéval, és állítsd be a failover módot Külső formátumra. A csak konfigurációs replika esetében válassza ki a konfiguráció rendelkezésre állási módját.

    Az alábbi példa egy AG-t mutat be két replikával, egy külső fürttípussal és egy csak konfigurációs replikával.

    Képernyőkép a Rendelkezésre állási csoport létrehozása ablakról, amely az olvasható másodlagos beállítást mutatja.

    Az alábbi példa egy AG-t mutat be két replikával, fürt nélküli típusú, és egy konfigurációs célú replikával.

  9. Ha meg akarod változtatni a biztonsági mentési beállításokat, válaszd a Biztonsági beállítások fület. További információért az AG-k biztonsági mentési beállításairól lásd: Konfigurálni a mentéseket egy Always On elérhetőségi csoport másodlagos replikáin.

  10. Ha olvasható másodfokokat használ, vagy olyan AG-t hoz létre, amelynek fürttípusa Nincs az olvasási skálázáshoz, a Figyelő lap kiválasztásával létrehozhat egy figyelőt. Később figyelőt is hozzáadhat. Hallgató létrehozásához válassza ki a Elérhetőségi csoport hallgató létrehozása opciót, és adja meg a nevet, egy TCP/IP portot, valamint hogy statikus vagy automatikusan hozzárendelt DHCP IP-címet használjon. Egy AG esetén, amelynek klaszter típusa Nincs, használjunk egy statikus IP-címet, amely megegyezik az elsődleges IP-címmel.

    Képernyőkép a Rendelkezésre állási csoport létrehozásáról, amely a figyelő beállítást mutatja.

  11. Ha olvasható forgatókönyvekhez hozol létre hallgatót, az SSMS lehetővé teszi a varázslóban csak olvasható útválasztás létrehozását. Később hozzáadhatod SSMS vagy Transact-SQL használatával is. Az írásvédett útválasztás most hozzáadása:

    1. Válaszd ki a Read-Only Routing fület.

    2. Adja meg az írásvédett replikák URL-címeit. Ezek az URL-címek hasonlóak a végpontokhoz, kivéve, hogy a példány portját használják, nem a végpontot.

      1. Jelölje ki az egyes URL-címeket, és alulról válassza ki az olvasható replikákat. Több kijelöléséhez tartsa lenyomva a Shift billentyűt, vagy kattintás után húzással jelölje ki a kívánt elemeket.
  12. Válassza a Tovább gombot.

  13. Válassza ki a másodlagos replikák inicializálásának módját. Az alapértelmezett beállítás az automatikus vetéshasználata, amelyhez az AG-ben részt vevő összes kiszolgálón ugyanazt az elérési utat kell használni. A varázsló biztonsági mentést, másolást és visszaállítást is végezhet (a második lehetőség); vagy csatlakozhat, ha manuálisan készített biztonsági másolatot, másolta és állította vissza az adatbázist a replikákon (harmadik lehetőség); vagy később is hozzáadhatja az adatbázist (utolsó lehetőség). A tanúsítványokhoz hasonlóan, ha manuálisan készít biztonsági másolatot és másolja őket, állítsa be a többi replika biztonsági mentési fájljaira vonatkozó engedélyeket. Válassza a Tovább gombot.

  14. Az Validáció párbeszédben, ha a varázsló nem adja vissza a Sikert minden próbára, utánanézz tovább. Egyes figyelmeztetések elfogadhatóak és nem végzetesek, például ha nem hoz létre figyelőt. Válassza a Tovább gombot.

  15. Az Összefoglaló párbeszédben válaszd a Befejezést. Ekkor megkezdődik az AG létrehozásának folyamata.

  16. Amikor az AG létrehozása befejeződött, válaszd a Eredmények oldalon a Bezárás lehetőséget. Mostantól a dinamikus felügyeleti nézetek replikáin, valamint az SSMS Always On Magas rendelkezésre állású mappájában láthatja az AG-t.

Használd a Transact-SQL-t

Ez a rész példákat mutat arra, hogyan hozhat létre AG-t Transact-SQL használatával. Az AG létrehozása után konfigurálhatja a „listenert” és az írásvédett útvonalvezetést. Az AG-t a ALTER AVAILABILITY GROUP használatával módosíthatja, de az SQL Server 2017-ben (14.x) nem módosíthatja a fürt típusát. Ha nem külső fürttípusú AG-t akart létrehozni, akkor törölnie kell, és újra létre kell hoznia egy Nincs típusú fürttel.

További információkért és egyéb lehetőségekért lásd:

Példa A: Két replika csak konfigurációs replikával (külső fürttípus)

Ez a példa bemutatja, hogyan hozhat létre két replika AG-t, amely csak konfigurációs replikát használ.

  1. Hajtsd végre a következő utasítást a fő replika csomóponton, amely tartalmazza az adatbázisok olvasási/írási másolatát. Ez a példa automatikus vetést használ.

    CREATE AVAILABILITY GROUP [<AGName>]
    WITH (CLUSTER_TYPE = EXTERNAL)
    FOR DATABASE <DBName>
    REPLICA ON
    N'LinAGN1' WITH (
       ENDPOINT_URL = N' TCP://LinAGN1.FullyQualified.Name:5022',
       FAILOVER_MODE = EXTERNAL,
       AVAILABILITY_MODE = SYNCHRONOUS_COMMIT
    ),
    N'LinAGN2' WITH (
       ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022',
       FAILOVER_MODE = EXTERNAL,
       AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
       SEEDING_MODE = AUTOMATIC
    ),
    N'LinAGN3' WITH (
       ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022',
       AVAILABILITY_MODE = CONFIGURATION_ONLY
    );
    GO
    
  2. Egy lekérdezési ablakban, amely a másik replikához csatlakozik, hajtsd végre a következő utasítást, hogy a replikát összekapcsoljuk az AG-vel, és elkezdjük a vetősítést az elsődleges replikáról a másodlagos replikára.

    ALTER AVAILABILITY GROUP [<AGName>]
    JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [<AGName>]
    GRANT CREATE ANY DATABASE;
    GO
    
  3. A csak konfigurációs replikához kapcsolódó lekérdezési ablakban futtasd a következő utasítást, hogy a replikát csatlakoztasd az AG-hez.

    ALTER AVAILABILITY GROUP [<AGName>]
    JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    

B: Példa: Három replika írásvédett útválasztással (külső klasztertípus)

Ez a példa megmutatja, hogyan lehet csak olvasható útmutatást konfigurálni az eredeti AG létrehozásának részeként három teljes replika esetén.

  1. Hajtsa végre a következő utasítást az elsődleges replikaként működő csomóponton, és tartalmazza az adatbázisok teljes olvasási/írási másolatát. Ez a példa automatikus vetést használ.

    CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL)
    FOR DATABASE < DBName > REPLICA ON
        N'LinAGN1' WITH (
            ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name:5022',
            FAILOVER_MODE = EXTERNAL,
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (
                (
                    'LinAGN2.FullyQualified.Name',
                    'LinAGN3.FullyQualified.Name'
                    )
                )),
            SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:1433')
        ),
        N'LinAGN2' WITH (
            ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022',
            FAILOVER_MODE = EXTERNAL,
            SEEDING_MODE = AUTOMATIC,
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (
                (
                    'LinAGN1.FullyQualified.Name',
                    'LinAGN3.FullyQualified.Name'
                    )
                )),
            SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:1433')
        ),
        N'LinAGN3' WITH (
            ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022',
            FAILOVER_MODE = EXTERNAL,
            SEEDING_MODE = AUTOMATIC,
            AVAILABILITY_MODE = SYNCHRONOUS_COMMIT,
            PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (
                (
                    'LinAGN1.FullyQualified.Name',
                    'LinAGN2.FullyQualified.Name'
                    )
                )),
            SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN3.FullyQualified.Name:1433')
        )
        LISTENER '<ListenerName>' (
            WITH IP = ('<IPAddress>', '<SubnetMask>'), Port = 1433
        );
    GO
    

    Néhány megjegyzés ehhez a konfigurációhoz:

    • AGName az AG neve.
    • DBName az AG-vel használt adatbázis neve. Ez lehet egy vesszővel elválasztott névlista is.
    • ListenerName egy olyan név, amely eltér bármely szervertől vagy csomóponttól. Azt a(z) IPAddress elemmel együtt regisztrálod a DNS-ben.
    • IPAddress a(z) ListenerName IP-címe. Ez is egyedi, és egyetlen kiszolgálóval vagy csomóponttal sem egyezik meg. Az alkalmazások és a végfelhasználók ListenerName vagy IPAddress használatával csatlakoznak az AG-hez.
      • SubnetMask IPAddressalhálózati maszkja. Az SQL Server 2019 -ben (15.x) és a korábbi verziókban ez az érték .255.255.255.255 Az SQL Server 2022 (16.x) és újabb verzióiban ez az érték .0.0.0.0
  2. A másik replikához csatlakoztatott lekérdezési ablakban hajtsa végre a következő utasítást a replika AG-hez való csatlakoztatásához, és indítsa el a vetés folyamatát az elsődlegesről a másodlagos replikára.

    ALTER AVAILABILITY GROUP [<AGName>]
    JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [<AGName>]
    GRANT CREATE ANY DATABASE;
    GO
    
  3. Ismételje meg a 2. lépést a harmadik replikához.

Példa C: Két replika írásvédett útválasztással (nincs klaszter típus)

Ez a példa egy két-replika konfigurációt hoz létre, amely egy klaszter típusú None rendszert használ. Használd ezt a konfigurációt olvasási skálázás esetén, ahol nem számíthatsz a failoverre. Ez a lépés létrehozza az elsődleges replikaként működő figyelőt, és beállítja a csak olvasható útválasztást round-robin funkcióval.

  1. Hajtsa végre a következő utasítást az elsődleges replikaként működő csomóponton, és tartalmazza az adatbázisok teljes olvasási/írási másolatát. Ez a példa automatikus vetést használ.

    CREATE AVAILABILITY GROUP [<AGName>]
    WITH (CLUSTER_TYPE = NONE)
    FOR DATABASE <DBName> REPLICA ON
        N'LinAGN1' WITH (
            ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name: <PortOfEndpoint>',
            FAILOVER_MODE = MANUAL,
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            PRIMARY_ROLE(
                ALLOW_CONNECTIONS = READ_WRITE,
                READ_ONLY_ROUTING_LIST = (('LinAGN1.FullyQualified.Name'.'LinAGN2.FullyQualified.Name'))
            ),
            SECONDARY_ROLE(
                ALLOW_CONNECTIONS = ALL,
                READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:<PortOfInstance>'
            )
        ),
        N'LinAGN2' WITH (
            ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfEndpoint>',
            FAILOVER_MODE = MANUAL,
            SEEDING_MODE = AUTOMATIC,
            AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
            PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (
                     ('LinAGN1.FullyQualified.Name',
                        'LinAGN2.FullyQualified.Name')
                     )),
            SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfInstance>')
        ),
        LISTENER '<ListenerName>' (WITH IP = (
                 '<PrimaryReplicaIPAddress>',
                 '<SubnetMask>'),
                Port = <PortOfListener>
        );
    GO
    

    Ebben a példában:

    • AGName az AG neve.
    • DBName az AG-vel használt adatbázis neve. Ez lehet egy vesszővel elválasztott névlista is.
    • PortOfEndpoint ez a portszám a létrehozott végponthoz.
      • PortOfInstanceaz SQL Server példányának portszáma.
    • ListenerName egy helyőrző név, amely eltér az alapul szolgáló replikák bármelyikétől.
    • PrimaryReplicaIPAddress az elsődleges replika IP-címe.
      • SubnetMask IPAddressalhálózati maszkja. Az SQL Server 2019 -ben (15.x) és a korábbi verziókban ez az érték .255.255.255.255 Az SQL Server 2022 (16.x) és újabb verzióiban ez az érték .0.0.0.0
  2. Csatlakoztassa a másodlagos replikát az AG-hez, és indítsa el az automatikus vetést.

    ALTER AVAILABILITY GROUP [<AGName>]
    JOIN WITH (CLUSTER_TYPE = NONE);
    GO
    
    ALTER AVAILABILITY GROUP [<AGName>]
    GRANT CREATE ANY DATABASE;
    GO
    

Az SQL Server bejelentkezési és engedélyeinek létrehozása a Pacemakerhez

A Pacemaker magas rendelkezésre állású fürt, amely SQL Servert használ Linuxon, hozzáférést igényel az SQL Server-példányhoz, valamint engedélyeket magára az elérési csoportra. Ezek a lépések létrehozzák a bejelentkezést és a kapcsolódó engedélyeket, valamint egy fájlt, amely tájékoztatja a Pacemakert az SQL Serveren való hitelesítésről.

  1. Az első replikához csatlakoztatott lekérdezési ablakban hajtsa végre a következő szkriptet:

    CREATE LOGIN PMLogin
        WITH PASSWORD = '<password>';
    GO
    
    GRANT VIEW SERVER STATE TO PMLogin;
    GO
    
    GRANT ALTER, CONTROL, VIEW DEFINITION
    ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin;
    GO
    
  2. Az 1-es csomóponton adjuk hozzá a következő két sort a /var/opt/mssql/secrets/passwd fájlhoz:

    PMLogin
    
    <password>
    

    Lehet, hogy a jogosultságokat meg kell emelned a sudo fájl szerkesztéséhez.

  3. Zárold le a fájlt:

    sudo chmod 400 /var/opt/mssql/secrets/passwd
    
  4. Ismételje meg az 1–5. lépést a replikaként szolgáló többi kiszolgálón.

Az elérhetőségi csoport erőforrásainak létrehozása a Pacemaker klaszterben (csak külső)

Miután létrehoz egy hozzáférhetőségi csoportot az SQL Serverben, az externális fürttípus megadásakor létre kell hoznia a megfelelő erőforrásokat a Pacemakerben. Az AG-nek két erőforrásra van szüksége: a rendelkezésre állási csoport erőforrására és egy IP-címerőforrásra. Az IP-címerőforrás konfigurálása nem kötelező, ha nem használ figyelőt. Azonban akkor ajánlott, ha figyelőfunkciókra van szüksége.

A létrehozott AG-erőforrás egy klónnak nevezett erőforrástípus. Az AG-erőforrás minden csomóponton rendelkezik másolattal, valamint egy előléptetett nevű vezérlő erőforrással. A promóciós erőforrás megfelel annak a szervernek, amely az elsődleges replikát üzemelteti. A többi erőforrás másodlagos replikákat (normál vagy csak konfigurációs szinten) üzemeltet, és ezeket előre lehet léptetni egy failoverben.

Note

Az SQL Server 2025 (17.x) verzióban a Cumulative Update (CU) 3 és újabb verziókkal a Pacemaker HA Agent v2 (előzetes) elérhető Red Hat Enterprise Linux (RHEL) és Ubuntu verzióihoz a csomagon keresztülmssql-server-ha. A Pacemaker HA ügynök v2-t nem gyártási telepítésekben is értékelheted. A meglévő Pacemaker HA-ügynök (v1) továbbra is teljes mértékben támogatott a produkciós telepítésekhez. További információért lásd: Pacemaker HA agent v2 (előzetes).

Pacemaker HA-ügynök v1

  1. Hozza létre az AG-erőforrást a Pacemaker HA-ügynök (v1) használatával: (ocf:mssql:ag)

    sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s promotable notify=true
    

    Ebben a példában NameForAGResource az AG fürterőforrásának adott egyedi nevet adja, és AGName a létrehozott AG nevét.

  2. Hozza létre a figyelő funkcióhoz társított AG IP-címerőforrását.

    sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>
    

    Ebben a példában NameForIPResource az IP-erőforrás egyedi neve, és IPAddress az erőforráshoz hozzárendelt statikus IP-cím.

  3. Annak érdekében, hogy az IP-cím és az AG-erőforrás ugyanazon a csomóponton fusson, konfiguráljon egy közös elhelyezési korlátozást.

    sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITY
    

    Ebben a példában NameForIPResource az IP-erőforrás neve, és NameForAGResource az AG-erőforrás neve.

  4. Hozzon létre egy sorrendiségi megkötést annak biztosítására, hogy az AG-erőforrás az IP-cím előtt fusson. Bár a helymegkötés rendelési kényszert jelent, ez a lépés kényszeríti azt.

    sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>
    

    Ebben a példában NameForIPResource az IP-erőforrás neve, és NameForAGResource az AG-erőforrás neve.

Pacemaker HA-ügynök v2 (előzetes verzió)

Az SQL Server 2025 (17.x) verzióban a Cumulative Update (CU) 3 és újabb verziókkal egy új Pacemaker HA agent v2 érhető el Red Hat Enterprise Linux (RHEL) és Ubuntu számára a mssql-server-ha csomagban.

A Pacemaker HA-ügynök v2-ben megbízhatósági és teljesítménybeli fejlesztések történtek az előző ügynökkel szemben, beleértve a következőket:

  • Továbbfejlesztett feladatátvételi teljesítmény a tervezett és a nem tervezett feladatátvételi idő csökkentése érdekében.

  • Rugalmas automatikus feladatátvételi szabályzatok támogatása, beleértve az állapot-ellenőrzési időtúllépés és a hibaállapot-szint konfigurálását.

  • A TLS 1.3 támogatása a Pacemaker-klaszter és az SQL Server közötti kommunikációhoz.

A Pacemaker HA-ügynök v2 jelenleg előzetes verzióban érhető el. A meglévő Pacemaker HA-ügynök (v1) továbbra is teljes mértékben támogatott a produkciós telepítésekhez.

A Pacemaker HA ügynök v2 szolgáltatásalapú architektúrát használ. Az ügynök egy dedikált rendszerszolgáltatásként fut, amelynek neve mssql-pcsag, amely felelős az SQL Server-specifikus, magas rendelkezésre állási műveletekért és a Pacemakerrel való kommunikációért.

A mssql-pcsag szolgáltatást szabványos rendszervezérléssel kezeled. Indíts, állítsd meg, indítsd újra, és szükség szerint ellenőrizd a szolgáltatás állapotát a következő parancsokkal:

sudo systemctl start mssql-pcsag  # Start the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl stop mssql-pcsag  # Stop the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl restart mssql-pcsag  # Restart the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl status mssql-pcsag  # Check the status of the Pacemaker HA agent v2 (mssql-pcsag) service

A Pacemaker a szolgáltatáson keresztül kommunikál az SQL Server rendelkezésre állási csoportjaival mssql-pcsag . A rendelkezésre állási csoport monitorozásának és feladatátvételének megfelelő működéséhez:

  • A Pacemaker-fürtnek futnia kell.
  • A mssql-pcsag szolgáltatásnak futnia kell.

Bár a Pacemaker és mssql-pcsag különálló komponensek, működés közben együtt működnek. Ha a Pacemaker vagy a mssql-pcsag szolgáltatás leáll, az elérhetőségi csoport feladatátvételi műveletei nem a várt módon működnek.

Note

A szolgáltatás újraindítása nem indítja újra az mssql-pcsag SQL Servert. Hasonlóképpen, az SQL Server újraindítása nem indítja újra automatikusan a Pacemaker HA-ügynököt. Ellenőrizze, hogy mindkét szolgáltatás fut-e a hibaelhárítás során.

A Pacemaker HA agent v2 támogatja a rugalmas automatikus failover szabályzatokat is, beleértve a hiba-állapot szintjének és az egészségellenőrzési időkorlát konfigurálását.

  • Példa: A következő Transact-SQL utasítás megváltoztatja egy AG1 nevű elérhetőségi csoport hiba-állapot szintjét 2-es szintre:

    ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 2);
    
  • Példa: Az alábbi Transact-SQL állítás megváltoztatja egy AG1 nevű elérhetőségi csoport egészségügyi ellenőrzési időtúllépési küszöbértékét 60 000 milliszekundumra (60 másodpercre).

    ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);
    
  • Példa: A konfiguráció alkalmazása után a következő Transact-SQL utasítást használd a konfigurált hibafeltétel szint és az elérhetőségi csoportok egészségügyi ellenőrzési időkorlátjának ellenőrzésére.

    SELECT failure_condition_level,
           health_check_timeout
    FROM sys.availability_groups;
    
  1. Hozza létre az AG-erőforrást a Pacemakerben a Pacemaker HA ügynök v2 használatával: (ocf:mssql:agv2)

    sudo pcs resource create <NameForAGResource> ocf:mssql:agv2 ag_name=<AGName> meta failure-timeout=30s promotable notify=true
    

    Ha a Pacemaker HA agent verzió 1-ről verzió 2-re frissít, távolítsa el a meglévő AG-erőforrást az agv2 erőforrás létrehozása előtt.

    sudo pcs resource delete <NameForAGResource>
    

    Ez a művelet ideiglenesen leállítja az AG-szinkronizálást az erőforrás újbóli létrehozása közben. A Pacemaker AG-erőforrás törlése és újrakészítése nem törli az AG-t. Az erőforrás újbóli létrehozása után a Pacemaker automatikusan folytatja a felügyeletet és az AG-szinkronizálást.

  2. Hozza létre a figyelő funkcióhoz társított AG IP-címerőforrását.

    sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>
    

    Ebben a példában NameForIPResource az IP-erőforrás egyedi neve, és IPAddress az erőforráshoz hozzárendelt statikus IP-cím.

  3. Annak érdekében, hogy az IP-cím és az AG-erőforrás ugyanazon a csomóponton fusson, konfiguráljon egy közös elhelyezési korlátozást.

    sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITY
    

    Ebben a példában NameForIPResource az IP-erőforrás neve, és NameForAGResource az AG-erőforrás neve.

  4. Hozzon létre egy rendelési kényszert, hogy az AG-erőforrás az IP-cím előtt működjön. Bár a helymegkötés rendelési kényszert jelent, ez a lépés kényszeríti azt.

    sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>
    

    Ebben a példában NameForIPResource az IP-erőforrás neve, és NameForAGResource az AG-erőforrás neve.