Sdílet prostřednictvím


Vytvoření a konfigurace skupiny dostupnosti pro SQL Server v Linuxu

platí pro:SQL Server – Linux

V tomto kurzu se dozvíte, jak vytvořit a nakonfigurovat skupinu dostupnosti (AG) pro SQL Server v Linuxu. Na rozdíl od SQL Serveru 2016 (13.x) a starších verzí na Windows můžete nejprve povolit skupinu dostupnosti (AG) s vytvořením základního clusteru Pacemaker nebo bez něj. Integrace s clusterem není v případě potřeby dokončena až později.

Kurz obsahuje následující úlohy:

  • Povolte skupiny dostupnosti.
  • Vytvořte koncové body skupiny dostupnosti a certifikáty.
  • K vytvoření skupiny dostupnosti použijte SQL Server Management Studio (SSMS) nebo Transact-SQL.
  • Vytvořte pro Pacemaker přihlašovací údaje a oprávnění k SQL Serveru.
  • Vytvoření zdrojů pro skupiny dostupnosti v clusteru Pacemaker (externí typ pouze)

Požadavky

Nasaďte cluster s vysokou dostupností Pacemakeru, jak je popsáno v tématu Nasazení clusteru Pacemaker pro SQL Server v Linuxu.

Povolení funkce skupin dostupnosti

Na rozdíl od Windows nemůžete k povolení funkce skupin dostupnosti (AG) použít PowerShell ani SQL Server Configuration Manager. V linuxu musíte tuto funkci povolit pomocí mssql-conf. Existují dva způsoby povolení funkce skupin dostupnosti: použijte nástroj mssql-conf nebo upravte soubor mssql.conf ručně.

Důležitý

Funkce skupiny dostupnosti musí být povolena pro repliky jen pro konfiguraci, a to i na SQL Serveru Express.

Použití nástroje mssql-conf

Na příkazovém řádku zadejte následující příkaz:

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

Úprava souboru mssql.conf

Můžete také upravit soubor mssql.conf umístěný ve složce /var/opt/mssql a přidat následující řádky:

[hadr]

hadr.hadrenabled = 1

Restartování SQL Serveru

Po povolení skupin dostupnosti, jako ve Windows, musíte sql Server restartovat pomocí následujícího příkazu:

sudo systemctl restart mssql-server

Vytvoření koncových bodů skupiny dostupnosti a certifikátů

Skupina dostupnosti používá ke komunikaci koncové body PROTOKOLU TCP. V Linuxu jsou koncové body skupiny dostupnosti podporovány pouze pokud se k ověřování používají certifikáty. Certifikát musíte obnovit z jedné instance ve všech ostatních instancích, které se budou účastnit jako repliky ve stejné skupině dostupnosti. Proces certifikátu se vyžaduje i pro repliku jen pro konfiguraci.

Vytváření koncových bodů a obnovování certifikátů je možné provádět pouze prostřednictvím jazyka Transact-SQL. Můžete také používat negenerované certifikáty SQL Serveru. Potřebujete také proces správy a nahrazení všech certifikátů, jejichž platnost vyprší.

Důležitý

Pokud plánujete použít průvodce SQL Server Management Studio k vytvoření AG, budete muset certifikáty vytvořit a obnovit pomocí Transact-SQL v Linuxu.

Úplnou syntaxi možností dostupných pro různé příkazy (včetně zabezpečení) najdete v následujících informacích:

Poznámka

Přestože vytváříte skupinu dostupnosti, typ koncového bodu používá FOR DATABASE_MIRRORING, protože některé základní aspekty byly jednou sdíleny s aktuálně zastaralou funkcí.

Tento příklad vytvoří certifikáty pro konfiguraci se třemi uzly. Názvy instancí jsou LinAGN1, LinAGN2a LinAGN3.

  1. Spuštěním následujícího skriptu na LinAGN1 vytvořte hlavní klíč, certifikát a koncový bod a zálohujte certifikát. V tomto příkladu se pro koncový bod používá typický port TCP 5022.

    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. Totéž udělejte na LinAGN2:

    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. Nakonec proveďte stejnou sekvenci na 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. Pomocí scp nebo jiného nástroje zkopírujte zálohy certifikátu do každého uzlu, který patří do AG.

    V tomto příkladu:

    • Zkopírujte LinAGN1_Cert.cer do LinAGN2 a LinAGN3.
    • Zkopírujte LinAGN2_Cert.cer do LinAGN1 a LinAGN3.
    • Zkopírujte LinAGN3_Cert.cer do LinAGN1 a LinAGN2.
  5. Změňte vlastnictví a skupinu přidruženou ke zkopírovaným souborům certifikátů na mssql.

    sudo chown mssql:mssql <CertFileName>
    
  6. Vytvořte přihlášení na úrovni instance a uživatele přidružené k LinAGN2 a LinAGN3 na LinAGN1.

    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
    

    Opatrnost

    Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.

  7. Obnovit LinAGN2_Cert a LinAGN3_Cert na LinAGN1. Důležitým aspektem komunikace a zabezpečení skupiny dostupnosti je mít certifikáty ostatních replik.

    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. Udělte přihlašovacím údajům přidruženým k LinAG2 a LinAGN3 oprávnění pro připojení ke koncovému bodu v LinAGN1.

    GRANT CONNECT
        ON ENDPOINT::AGEP TO LinAGN2_Login;
    GO
    
    GRANT CONNECT
        ON ENDPOINT::AGEP TO LinAGN3_Login;
    GO
    
  9. Vytvořte přihlášení na úrovni instance a uživatele přidružené k LinAGN1 a LinAGN3 na LinAGN2.

    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. Obnovte LinAGN1_Cert a LinAGN3_Cert na 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. Udělte přihlašovacím údajům přidruženým k LinAG1 a LinAGN3 oprávnění pro připojení ke koncovému bodu v LinAGN2.

    GRANT CONNECT
        ON ENDPOINT::AGEP TO LinAGN1_Login;
    GO
    
    GRANT CONNECT
        ON ENDPOINT::AGEP TO LinAGN3_Login;
    GO
    
  12. Vytvořte přihlášení na úrovni instance a uživatele přidružené k LinAGN1 a LinAGN2 na LinAGN3.

    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. Obnovte LinAGN1_Cert a LinAGN2_Cert na 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. Udělte přihlašovacím údajům přidruženým k LinAG1 a LinAGN2 oprávnění pro připojení ke koncovému bodu v LinAGN3.

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

Vytvoření skupiny dostupnosti

Tato část popisuje, jak používat SQL Server Management Studio (SSMS) nebo Transact-SQL k vytvoření skupiny dostupnosti pro SQL Server.

Použití aplikace SQL Server Management Studio

Tato část ukazuje, jak vytvořit skupinu dostupnosti s typem clusteru Externí pomocí aplikace SSMS pomocí Průvodce vytvořením nové skupiny dostupnosti.

  1. V nástroji SSMS rozbalte Always On vysokou dostupnost, klikněte pravým tlačítkem na Skupiny dostupnostia vyberte Průvodce vytvořením nové skupiny dostupnosti.

  2. V dialogovém okně Úvod vyberte Další.

  3. V dialogovém okně Zadat možnosti skupiny dostupnosti zadejte název skupiny dostupnosti a v rozevíracím seznamu vyberte typ clusteru EXTERNAL nebo NONE. Externí by se mělo použít při nasazení Pacemakeru. Žádná není určená pro specializované scénáře, jako je horizontální navýšení kapacity čtení. Výběr možnosti detekce stavu na úrovni databáze je volitelný. Další informace o této možnosti najdete v části možnost selhání detekce stavu databáze na úrovni skupiny dostupnosti. Vyberte Další.

    snímek obrazovky s možností Vytvořit skupinu dostupnosti zobrazující typ clusteru

  4. V dialogovém okně Vybrat databáze vyberte databáze, které se budou účastnit AG (skupiny dostupnosti). Pro přidání databáze do skupiny dostupnosti (AG) musí mít každá databáze úplnou zálohu. Vyberte Další.

  5. V dialogovém okně Zadat repliky vyberte Přidat repliku.

  6. V dialogovém okně Připojit k serveru zadejte název linuxové instance SQL Serveru, která bude sekundární replikou, a přihlašovací údaje pro připojení. Vyberte Připojit.

  7. Opakujte předchozí dva kroky pro instanci, která bude obsahovat repliku jen pro konfiguraci nebo jinou sekundární repliku.

  8. Všechny tři instance by teď měly být uvedené v dialogovém okně Zadat repliky. Pokud používáte typ clusteru Externí, pro sekundární repliku, která bude opravdová sekundární, ujistěte se, že režim dostupnosti odpovídá režimu dostupnosti primární repliky a režim převzetí služeb při selhání je nastaven na Externí. Pro repliku jen pro konfiguraci vyberte režim dostupnosti pouze konfigurace.

    Následující příklad ukazuje AG se dvěma replikami, typem clusteru External a replikou určenou pouze pro konfiguraci.

    snímek obrazovky s možností Vytvořit skupinu dostupnosti zobrazující čitelný sekundární možnost

    Následující příklad ukazuje skupinu dostupnosti se dvěma replikami, typem clusteru None a replikou jen pro konfiguraci.

    snímek obrazovky Skupiny dostupnosti zobrazuje stránku Repliky

  9. Pokud chcete změnit předvolby zálohování, vyberte kartu Předvolby zálohování. Další informace o předvolbách zálohování pomocí skupin dostupnosti AG najdete v tématu Konfigurace záloh na sekundárních replikách skupiny dostupnosti AlwaysOn.

  10. Pokud používáte čitelné sekundární soubory nebo vytváříte skupinu dostupnosti s typem clusteru Žádné pro škálování čtení, můžete vytvořit naslouchací proces výběrem karty Naslouchací proces. Naslouchací proces můžete přidat i později. Pokud chcete vytvořit naslouchací proces, zvolte možnost Vytvoření naslouchacího procesu skupiny dostupnosti a zadejte název, port TCP/IP a jestli chcete použít statickou nebo automaticky přiřazenou IP adresu DHCP. Mějte na paměti, že pro skupinu dostupnosti s typem clusteru 'None' by IP měla být statická a nastavena na IP adresu primárního serveru.

    Snímek obrazovky vytvoření skupiny dostupnosti zobrazující možnost naslouchání

  11. Pokud je naslouchací proces vytvořen pro čitelné scénáře, SSMS 17.3 nebo novější umožňuje vytvořit směrování jen pro čtení v průvodci. Můžete ho také přidat později přes SSMS nebo Transact-SQL. Chcete-li nyní přidat směrování jen pro čtení:

    1. Vyberte kartu Read-Only Směrování.

    2. Zadejte adresy URL replik jen pro čtení. Tyto adresy URL se podobají koncovým bodům, ale používají port instance, nikoli koncový bod.

    3. Vyberte každou adresu URL a dole vyberte čitelné repliky. Pro výběr více položek podržte klávesu SHIFT nebo táhněte myší.

  12. Vyberte Další.

  13. Zvolte způsob inicializace sekundárních replik. Ve výchozím nastavení se používá automatické osévání, což vyžaduje stejnou cestu na všech serverech, které se účastní skupiny dostupnosti. Průvodce také může provést zálohování, kopírování a obnovení (druhá možnost); připojte se, pokud jste databázi na replikách zálohovali, zkopírovali a obnovili ručně (třetí možnost); nebo přidejte databázi později (poslední možnost). Stejně jako u certifikátů, pokud ručně vytváříte zálohy a kopírujete je, musí být oprávnění k záložním souborům nastavená na ostatních replikách. Vyberte Další.

  14. Pokud výsledek v dialogovém okně Ověření není úspěšný, zkontrolujte to. Některá upozornění jsou přijatelná a ne kritická, například pokud nevytvoříte posluchač. Vyberte Další.

  15. V dialogovém okně Souhrn vyberte Dokončit. Proces pro vytvoření AG nyní začíná.

  16. Po dokončení vytváření AG ve výsledcích vyberte Zavřít. Skupiny dostupnosti (AG) teď můžete zobrazit na replikách v zobrazeních dynamické správy a ve složce Vysoká dostupnost Always On v SSMS.

Použijte Transact-SQL

Tato část ukazuje příklady vytvoření skupiny dostupnosti pomocí jazyka Transact-SQL. Směrování naslouchacího procesu a jen pro čtení je možné nakonfigurovat po vytvoření skupiny dostupnosti. Samotnou skupinu dostupnosti je možné upravit pomocí ALTER AVAILABILITY GROUP, ale změnu typu clusteru není možné provést v SQL Serveru 2017 (14.x). Pokud jste nechtěli vytvořit skupinu dostupnosti s typem externího clusteru, musíte ji odstranit a znovu vytvořit s typem clusteru Žádné. Další informace a další možnosti najdete na následujících odkazech:

Příklad A: Dvě repliky s replikou určenou pouze pro konfiguraci (typ externího clusteru)

Tento příklad ukazuje, jak vytvořit skupinu dostupnosti se dvěma replikami, která používá repliku pouze pro konfiguraci.

  1. Spusťte na uzlu, který bude primární replikou obsahující plnohodnotnou kopii databáze. V tomto příkladu se používá automatické generování počátečních hodnot.

    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. V okně dotazu připojeném k druhé replice spusťte následující příkaz, který připojí repliku ke skupině dostupnosti a zahájí proces seedingu z primární do sekundární repliky.

    ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE;
    GO
    
  3. V okně dotazu připojeném k replice určené pouze pro konfiguraci ji připojte ke skupině dostupnosti.

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

Příklad B: Tři repliky se směrováním jen pro čtení (typ externího clusteru)

Tento příklad ukazuje tři úplné repliky a způsob konfigurace směrování jen pro čtení v rámci počátečního vytvoření skupiny dostupnosti.

  1. Spusťte na uzlu, který bude primární replikou obsahující úplnou kopii databází pro čtení a zápis. V tomto příkladu se používá automatické setí.

    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ěkolik věcí, které byste si měli poznamenat o této konfiguraci:

    • AGName je název skupiny dostupnosti.
    • DBName je název databáze, která se používá se skupinou dostupnosti. Může to být také seznam názvů oddělených čárkami.
    • ListenerName je název, který se liší od některého z podkladových serverů nebo uzlů. Bude zaregistrovaný v DNS spolu s IPAddress.
    • IPAddress je IP adresa přidružená k ListenerName. Je také jedinečný a není stejný jako žádný ze serverů nebo uzlů. Aplikace a koncoví uživatelé používají k připojení k AG ListenerName nebo IPAddress.
    • SubnetMask je maska podsítě IPAddress. V SQL Serveru 2019 (15.x) a předchozích verzích je to 255.255.255.255. V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích je to 0.0.0.0.
  2. V dotazovém okně připojeném k druhé replice spusťte následující příkaz, který připojí repliku ke skupině dostupnosti (AG) a zahájí proces seedingu z primární do sekundární repliky.

    ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE;
    GO
    
  3. Opakujte krok 2 pro třetí repliku.

Příklad C: Dvě repliky se směrováním jen pro čtení (typ clusteru None)

Tento příklad ukazuje vytvoření konfigurace dvou replik pomocí typu clusteru None. Používá se pro scénář škálování čtení, ve kterém se neočekává žádné převzetí služeb při selhání. Tím se vytvoří posluchač, který je ve skutečnosti primární replikou, a směrování pouze pro čtení pomocí funkce round robin.

  1. Spusťte na uzlu, který bude primární replikou obsahující plně čtení a zapisovatelnou kopii databáze. V tomto příkladu se používá automatické generování.
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

Kde:

  • AGName je název skupiny dostupnosti.
  • DBName je název databáze, která se bude používat se skupinou dostupnosti. Může to být také seznam názvů oddělených čárkami.
  • PortOfEndpoint je číslo portu používané vytvořeným koncovým bodem.
  • PortOfInstance je číslo portu používané instancí SQL Serveru.
  • ListenerName je název, který se liší od některé z podkladových replik, ale ve skutečnosti se nepoužívá.
  • PrimaryReplicaIPAddress je IP adresa primární repliky.
  • SubnetMask je maska podsítě IPAddress. V SQL Serveru 2019 (15.x) a předchozích verzích je to 255.255.255.255. V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích je to 0.0.0.0.
  1. Připojit sekundární repliku ke skupině dostupnosti a zahájit automatické nasazení.

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

Vytvoření přihlášení a oprávnění SQL Serveru pro Pacemaker

Cluster s vysokou dostupností Pacemakeru, který je základem SQL Serveru v Linuxu, potřebuje přístup k instanci SQL Serveru a oprávnění k samotné skupině dostupnosti. Tyto kroky vytvoří přihlášení a přidružená oprávnění spolu se souborem, který pacemakeru řekne, jak se přihlásit k SQL Serveru.

  1. V okně dotazu připojeném k první replice spusťte následující skript:

    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. Na uzlu 1 zadejte příkaz.

    sudo emacs /var/opt/mssql/secrets/passwd
    

    Otevře se editor Emacs.

  3. Do editoru zadejte následující dva řádky:

    PMLogin
    
    <password>
    
  4. Podržte stisknutou klávesu Ctrl a potom stiskněte Xa pak C, ukončete a uložte soubor.

  5. Provést

    sudo chmod 400 /var/opt/mssql/secrets/passwd
    

    uzamknout soubor.

  6. Opakujte kroky 1 až 5 na ostatních serverech, které budou sloužit jako repliky.

Vytvořte prostředky skupiny dostupnosti v clusteru Pacemaker (pouze externí)

Po vytvoření skupiny dostupnosti na SQL Serveru musí být odpovídající prostředky vytvořeny v Pacemakeru, pokud je zadán typ clusteru Externí. K "AG" jsou přidružené dva prostředky: samotné "AG" a IP adresa. Konfigurace prostředku IP adresy je volitelná, pokud nepoužíváte funkci posluchače, ale přesto se doporučuje.

Prostředek skupiny dostupnosti (AG), který jste vytvořili, je typ prostředku nazývaný klon. Prostředek AG má v podstatě kopie na každém uzlu, a je zde jeden řídicí prostředek nazývaný jako master . Hlavní server je přidružený k serveru, který je hostitelem primární repliky. Ostatní prostředky hostují sekundární repliky (běžné nebo pouze konfigurační) a mohou být povýšeny na hlavní uzel při selhání.

Poznámka

Komunikace bez předsudků

Tento článek obsahuje odkazy na termín otrok, který Microsoft považuje za urážlivý, pokud je použit v tomto kontextu. Termín se zobrazí v tomto článku, protože se aktuálně zobrazuje v softwaru. Když se termín odebere ze softwaru, odebereme ho z článku.

  1. Vytvořte prostředek AG s následující syntaxí:

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

    Kde NameForAGResource je jedinečný název přidělený tomuto prostředku clusteru pro skupinu dostupnosti a AGName je název skupiny dostupnosti, která byla vytvořena.

    V systémech RHEL 7.7 a Ubuntu 18.04 a novějších verzích se může zobrazit upozornění s použitím --masternebo s chybou, jako je sqlag_monitor_0 on ag1 'not configured' (6): call=6, status=complete, exitreason='Resource must be configured with notify=true'. Pokud se chcete této situaci vyhnout, použijte:

    sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s master notify=true
    
  2. Vytvořte prostředek IP adresy pro aplikační bránu, který bude připojen k naslouchací funkci.

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

    Kde NameForIPResource je jedinečný název prostředku IP a IPAddress je statická IP adresa přiřazená k prostředku.

  3. Pokud chcete zajistit, aby IP adresa a prostředek AG běžely na stejném uzlu, musí být nastaveno omezení kolokace.

    sudo pcs constraint colocation add <NameForIPResource> <NameForAGResource>-master INFINITY with-rsc-role=Master
    

    Kde NameForIPResource je název prostředku IP a NameForAGResource je název prostředku AG.

  4. Vytvořte pořadí, které zajistí, že je prostředek AG v provozu před IP adresou. I když kolokační omezení znamená omezení řazení, toto jej vynucuje.

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

    Kde NameForIPResource je název prostředku IP a NameForAGResource je název prostředku AG.

Další krok

V tomto kurzu jste zjistili, jak vytvořit a nakonfigurovat skupinu dostupnosti pro SQL Server v Linuxu. Naučili jste se:

  • Povolte skupiny dostupnosti.
  • Vytvořte koncové body a certifikáty AG.
  • K vytvoření skupiny dostupnosti (AG) použijte SQL Server Management Studio (SSMS) nebo Transact-SQL.
  • Vytvořte pro Pacemaker přihlašovací údaje a oprávnění k SQL Serveru.
  • Vytvořte prostředky skupiny dostupnosti v clusteru Pacemaker.

Většinu úloh správy skupiny dostupnosti (AG), včetně aktualizací a procedur při selhání, můžete nalézt zde: