Delen via


Een beschikbaarheidsgroep maken en configureren voor SQL Server in Linux

Van toepassing op:SQL Server op Linux

Deze zelfstudie laat zien hoe u een beschikbaarheidsgroep (AG) maakt en configureert voor SQL Server in Linux. In tegenstelling tot SQL Server 2016 (13.x) en eerdere versies in Windows, kunt u een AG inschakelen met of zonder eerst het onderliggende Pacemaker-cluster te maken. De integratie met het cluster vindt zo nodig later plaats.

De zelfstudie bevat de volgende taken:

  • Beschikbaarheidsgroepen inschakelen.
  • Eindpunten en certificaten voor beschikbaarheidsgroepen maken.
  • Gebruik SQL Server Management Studio (SSMS) of Transact-SQL om een beschikbaarheidsgroep te maken.
  • Maak de sql Server-aanmelding en -machtigingen voor Pacemaker.
  • Resources voor beschikbaarheidsgroepen maken in een Pacemaker-cluster (alleen extern type).

Voorwaarden

Implementeer het Pacemaker-cluster met hoge beschikbaarheid, zoals beschreven in Implementeer een Pacemaker-cluster voor SQL Server op Linux.

De functie beschikbaarheidsgroepen inschakelen

In tegenstelling tot Windows kunt u PowerShell of SQL Server Configuration Manager niet gebruiken om de functie beschikbaarheidsgroepen (AG) in te schakelen. In Linux kunt u de functie voor beschikbaarheidsgroepen op twee manieren inschakelen: het hulpprogramma mssql-conf gebruiken of het mssql.conf bestand handmatig bewerken.

Belangrijk

U moet de AG-functie inschakelen, zelfs op SQL Server Express, voor replica's die alleen voor configuraties zijn.

Het hulpprogramma mssql-conf gebruiken

Voer bij een prompt de volgende opdracht uit:

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

Het bestand mssql.conf bewerken

U kunt het mssql.conf bestand ook wijzigen, dat zich onder de /var/opt/mssql map bevindt. Voeg de volgende regels toe:

[hadr]

hadr.hadrenabled = 1

SQL Server opnieuw starten

Nadat u beschikbaarheidsgroepen hebt ingeschakeld, moet u SQL Server opnieuw starten. Gebruik de volgende opdracht:

sudo systemctl restart mssql-server

De eindpunten en certificaten van de beschikbaarheidsgroep maken

Een beschikbaarheidsgroep maakt gebruik van TCP-eindpunten voor communicatie. Onder Linux worden eindpunten voor een beschikbaarheidsgroep (AG) alleen ondersteund als certificaten worden gebruikt voor authenticatie. U moet het certificaat herstellen van het ene exemplaar op alle andere exemplaren die deelnemen als replica's in dezelfde beschikbaarheidsgroep. Het certificaatproces is vereist, zelfs voor een replica alleen voor configuratie.

U kunt alleen eindpunten maken en certificaten herstellen met Behulp van Transact-SQL. U kunt ook niet-SQL Server-gegenereerde certificaten gebruiken. U hebt ook een proces nodig voor het beheren en vervangen van certificaten die verlopen.

Belangrijk

Als u van plan bent om de SQL Server Management Studio-wizard te gebruiken om de AG (beschikbaarheidsgroep) te maken, moet u de certificaten nog steeds maken en terugzetten met behulp van Transact-SQL op Linux.

Raadpleeg voor volledige syntaxis over de opties die beschikbaar zijn voor de verschillende opdrachten (inclusief beveiliging):

Notitie

Hoewel u een beschikbaarheidsgroep maakt, gebruikt het type eindpunt FOR DATABASE_MIRRORING, omdat sommige onderliggende aspecten ooit gedeeld waren met die nu verouderde functie.

In dit voorbeeld worden certificaten gemaakt voor een configuratie met drie knooppunten. De instantienamen zijn LinAGN1, LinAGN2en LinAGN3.

  1. Voer het volgende script uit op LinAGN1 om de hoofdsleutel, het certificaat en het eindpunt te maken en een back-up van het certificaat te maken. In dit voorbeeld wordt de typische TCP-poort van 5022 gebruikt voor het eindpunt.

    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. Doe hetzelfde op 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. Voer ten slotte dezelfde reeks uit op 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. Gebruik scp of een ander hulpprogramma om de back-ups van het certificaat te kopiëren naar elk knooppunt dat deel uitmaakt van de beschikbaarheidsgroep AG.

    Voor dit voorbeeld:

    • Kopieer LinAGN1_Cert.cer naar LinAGN2 en LinAGN3.
    • Kopieer LinAGN2_Cert.cer naar LinAGN1 en LinAGN3.
    • Kopieer LinAGN3_Cert.cer naar LinAGN1 en LinAGN2.
  5. Wijzig het eigendom en de groep die is gekoppeld aan de gekopieerde certificaatbestanden in mssql.

    sudo chown mssql:mssql <CertFileName>
    
  6. Maak de aanmeldingen op exemplaarniveau en gebruikers die zijn gekoppeld aan LinAGN2 en LinAGN3 op 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
    

    Voorzichtigheid

    Uw wachtwoord moet voldoen aan het standaardbeleid voor SQL Server wachtwoordbeleid. Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

  7. Herstel LinAGN2_Cert en LinAGN3_Cert op LinAGN1. Het hebben van de certificaten van de andere replica's is een belangrijk aspect van AG-communicatie en -beveiliging.

    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. Verleen de aanmeldingen die zijn gekoppeld aan LinAGN2 en LinAGN3 toestemming om verbinding te maken met het eindpunt op LinAGN1.

    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login;
    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;
    
  9. Maak de aanmeldingen op exemplaarniveau en gebruikers die zijn gekoppeld aan LinAGN1 en LinAGN3 op 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. Herstel LinAGN1_Cert en LinAGN3_Cert op 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. Verleen de aanmeldingen die zijn gekoppeld aan LinAGN1 en LinAGN3 toestemming om verbinding te maken met het eindpunt op LinAGN2.

    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login;
    GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;
    GO
    
  12. Maak de aanmeldingen op exemplaarniveau en gebruikers die zijn gekoppeld aan LinAGN1 en LinAGN2 op 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. Herstel LinAGN1_Cert en LinAGN2_Cert op 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. Verleen de aanmeldingen die zijn gekoppeld aan LinAG1 en LinAGN2 toestemming om verbinding te maken met het eindpunt op LinAGN3.

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

De beschikbaarheidsgroep maken

In deze sectie wordt beschreven hoe u SQL Server Management Studio (SSMS) of Transact-SQL gebruikt om de beschikbaarheidsgroep voor SQL Server te maken.

SQL Server Management Studio gebruiken

In deze sectie wordt beschreven hoe u een beschikbaarheidsgroep maakt met een clustertype Extern met behulp van SSMS met de wizard Nieuwe beschikbaarheidsgroep.

  1. Vouw in SSMS AlwaysOn High Availabilityuit, klik met de rechtermuisknop op Beschikbaarheidsgroepenen selecteer wizard Nieuwe beschikbaarheidsgroep.

  2. Klik in het dialoogvenster Inleiding op Volgende.

  3. In het dialoogvenster "Beschikbaarheidsgroepopties opgeven" voert u een naam in voor de beschikbaarheidsgroep en selecteert u een clustertype EXTERNAL of NONE in de vervolgkeuzelijst. Gebruik EXTERNAL deze functie wanneer u Pacemaker implementeert. Gebruiken NONE voor gespecialiseerde scenario's, zoals uitschalen van leesbewerkingen. Het selecteren van de optie voor statusdetectie op databaseniveau is optioneel. Zie voor meer informatie over deze optie de failoveroptie voor gezondheidsdetectie op het databaseniveau van een beschikbaarheidsgroep. Selecteer Volgende.

    Screenshot van Create Availability Group met weergave van clustertype.

  4. Selecteer in het dialoogvenster 'Databases selecteren' de databases die zullen deelnemen aan de beschikbaarheidsgroep. Elke database moet een volledige back-up hebben voordat u deze aan een beschikbaarheidsgroep (AG) kunt toevoegen. Selecteer Volgende.

  5. Selecteer in het dialoogvenster Replica's specificeren de optie Replica toevoegen.

  6. Voer in het dialoogvenster Verbinding maken met server de naam in van het Linux-exemplaar van SQL Server dat de secundaire replica is en de referenties om verbinding te maken. Selecteer Verbind.

  7. Herhaal de vorige twee stappen voor het exemplaar dat een alleen-configuratiereplica of een andere secundaire replica bevat.

  8. Alle drie de exemplaren worden weergegeven in het dialoogvenster "Replica's specificeren". Als u een clustertype Extern gebruikt, moet u voor de secundaire replica die een echte secundaire replica is, ervoor zorgen dat de beschikbaarheidsmodus overeenkomt met die van de primaire replica en failovermodus is ingesteld op Extern. Voor de alleen-configuratiereplica selecteert u alleen een beschikbaarheidsmodus van Configuratie.

    ** In het volgende voorbeeld ziet u een AG met twee replica's, een clustertype van Extern, en een configuratie-replica.

    Schermopname van Create Availability Group met de leesbare secundaire optie.

    In het volgende voorbeeld ziet u een beschikbaarheidsgroep (AG) met twee replica's, een clustertype van Geen, en een configuratie-alleen-replica.

    Schermopname van Maak Beschikbaarheidsgroep met de pagina Replica's.

  9. Als u de back-upvoorkeuren wilt wijzigen, selecteert u het tabblad Voorkeuren voor back-up. Zie Back-ups configureren op secundaire replica's van een AlwaysOn-beschikbaarheidsgroepvoor meer informatie over back-upvoorkeuren met AG's.

  10. Als u leesbare secundaires gebruikt of een availability group maakt met het clustertype Geen voor leesschaal, kunt u een listener maken door het tabblad Listener te selecteren. U kunt later ook een listener toevoegen. Als u een listener wilt maken, kiest u de optie Listener voor een beschikbaarheidsgroep maken en voert u een naam, een TCP/IP-poort in en of u een statisch of automatisch toegewezen DHCP-IP-adres wilt gebruiken. Voor een AG met een clustertype Geen moet het IP-adres statisch zijn en ingesteld op het IP-adres van de primaire gebruiker.

    Schermopname van beschikbaarheidsgroep maken met de listeneroptie.

  11. Als u een listener maakt voor leesbare scenario's, kunt u met SSMS de alleen-lezen routering in de wizard aanmaken. U kunt het later ook toevoegen via SSMS of Transact-SQL. Als u nu alleen-lezenroutering wilt toevoegen:

    1. Selecteer het tabblad Read-Only Routering.

    2. Voer de URL's in voor de alleen-lezen replica's. Deze URL's zijn vergelijkbaar met de eindpunten, behalve dat ze de poort van het exemplaar gebruiken, niet het eindpunt.

    3. Kies elke URL en selecteer onderaan de leesbare kopieën. Als u meerdere selecties wilt uitvoeren, houdt u Shift ingedrukt of sleept u deze.

  12. Selecteer Volgende.

  13. Kies hoe de secundaire replica's worden geïnitialiseerd. De standaardinstelling is het gebruik van automatische seeding, waarvoor hetzelfde pad vereist is op alle servers die deelnemen in de AG. U kunt de wizard ook een back-up laten maken, kopiëren en herstellen (de tweede optie); de wizard laten deelnemen als u handmatig een back-up gemaakt, gekopieerd en hersteld hebt van de database op de replica's (derde optie); of de database later toevoegen (laatste optie). Net als bij certificaten kunt u, als u handmatig back-ups maakt en deze kopieert, machtigingen instellen voor de back-upbestanden op de andere replica's. Selecteer Volgende.

  14. Onderzoek in het dialoogvenster Validatie, als alles niet terugkomt als Geslaagd. Sommige waarschuwingen zijn acceptabel en niet fataal, bijvoorbeeld als u geen listener maakt. Selecteer Volgende.

  15. Selecteer in het dialoogvenster Samenvatting Voltooien. Het proces om de beschikbaarheidsgroep te creëren begint nu.

  16. Wanneer het maken van de beschikbaarheidsgroep is voltooid, selecteert u in de resultaten Sluiten. U ziet nu de AG op de replica's in de dynamische beheerweergaven en onder de map Always On High Availability in SSMS.

Gebruik Transact-SQL

In deze sectie ziet u voorbeelden van het maken van een AG met behulp van Transact-SQL. U kunt de listener en de read-only routering configureren nadat u de beschikbaarheidsgroep hebt gemaakt. U kunt de AG zelf wijzigen met behulp van ALTER AVAILABILITY GROUP, maar u kunt het clustertype in SQL Server 2017 (14.x) niet wijzigen. Als u geen AG met een clustertype Extern wilt maken, moet u deze verwijderen en opnieuw maken met het clustertype Geen. Zie de volgende koppelingen voor meer informatie en andere opties:

Voorbeeld A: Twee replica's met een alleen voor configuratie replica (extern clustertype)

In dit voorbeeld ziet u hoe u een AG met twee replica's maakt die gebruikmaakt van een configuration-only replica.

  1. Voer de volgende verklaring uit op het knooppunt dat fungeert als de primaire replica en de volledig leesbare/schrijfbare kopie van de databases bevat. In dit voorbeeld wordt automatische seeding gebruikt.

    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. Voer in een queryvenster dat is verbonden met de andere replica de volgende instructie uit om de replica aan de AG te koppelen en het seedingproces te starten van de primaire naar de secundaire replica.

    ALTER AVAILABILITY GROUP [<AGName>]
    JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [<AGName>]
    GRANT CREATE ANY DATABASE;
    GO
    
  3. Voer in een queryvenster dat is verbonden met de enige replica van de configuratie de volgende instructie uit om deze aan de beschikbaarheidsgroep toe te voegen.

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

Voorbeeld B: Drie replica's met alleen-lezen-routering (extern cluster type)

In dit voorbeeld ziet u drie volledige kopieën en hoe u alleen-lezenroutering kunt configureren als onderdeel van de initiële beschikbaarheidsgroep-aanmaak.

  1. Voer de volgende instructie uit op het knooppunt dat fungeert als de primaire replica en dat de volledige lees- en schrijfkopie van de databases bevat. In dit voorbeeld wordt automatische seeding gebruikt.

    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
    

    Enkele dingen die u moet weten over deze configuratie:

    • AGName is de naam van de beschikbaarheidsgroep.
    • DBName is de naam van de database die u gebruikt met de beschikbaarheidsgroep. Het kan ook een lijst met namen zijn, gescheiden door komma's.
    • ListenerName is een andere naam dan een van de onderliggende servers of knooppunten. Het is geregistreerd in DNS, samen met IPAddress.
    • IPAddress is een IP-adres dat is gekoppeld aan ListenerName. Het is ook uniek en niet hetzelfde als een van de servers of knooppunten. Toepassingen en eindgebruikers gebruiken ListenerName of IPAddress om verbinding te maken met de AG.
      • SubnetMask is het subnetmasker van IPAddress. In SQL Server 2019 (15.x) en vorige versies is 255.255.255.255deze waarde. In SQL Server 2022 (16.x) en latere versies is 0.0.0.0deze waarde.
  2. Voer in een queryvenster dat is verbonden met de andere replica de volgende instructie uit om de replica aan de AG te koppelen en het seedingproces te starten van de primaire naar de secundaire replica.

    ALTER AVAILABILITY GROUP [<AGName>]
    JOIN WITH (CLUSTER_TYPE = EXTERNAL);
    GO
    
    ALTER AVAILABILITY GROUP [<AGName>]
    GRANT CREATE ANY DATABASE;
    GO
    
  3. Herhaal stap 2 voor de derde replica.

Voorbeeld C: Twee replica's met alleen-lezenroutering (geen clustertype)

In dit voorbeeld ziet u hoe u een configuratie met twee replica's maakt met behulp van het clustertype None. Gebruik deze configuratie voor het leesschaalscenario waarbij geen failover wordt verwacht. Met deze stap stelt u de listener in die als primaire replica fungeert en configureert u de alleen-lezenroutering, gebruikmakend van de round robin-functionaliteit.

  1. Voer de volgende instructie uit op het knooppunt dat fungeert als de primaire replica en de volledige lees- en schrijfkopie van de databases bevat. In dit voorbeeld wordt automatische seeding gebruikt.

    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
    

    In dit voorbeeld:

    • AGName is de naam van de beschikbaarheidsgroep.
    • DBName is de naam van de database die u gebruikt met de beschikbaarheidsgroep. Het kan ook een lijst met namen zijn, gescheiden door komma's.
    • PortOfEndpoint is het poortnummer dat wordt gebruikt door het eindpunt dat u maakt.
      • PortOfInstance is het poortnummer dat wordt gebruikt door het exemplaar van SQL Server.
    • ListenerName is een naam die verschilt van die van de onderliggende replica's, maar die niet daadwerkelijk gebruikt wordt.
    • PrimaryReplicaIPAddress is het IP-adres van de primaire replica.
      • SubnetMask is het subnetmasker van IPAddress. In SQL Server 2019 (15.x) en vorige versies is 255.255.255.255deze waarde. In SQL Server 2022 (16.x) en latere versies is 0.0.0.0deze waarde.
  2. Koppel de secundaire replica aan de AG en initieer automatische seeding.

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

De sql Server-aanmelding en -machtigingen voor Pacemaker maken

Een Pacemaker-cluster met hoge beschikbaarheid dat gebruikmaakt van SQL Server op Linux heeft toegang nodig tot het SQL Server-exemplaar en machtigingen voor de beschikbaarheidsgroep zelf. Met deze stappen maakt u de aanmelding en de bijbehorende machtigingen, samen met een bestand dat Pacemaker vertelt hoe u zich aanmeldt bij SQL Server.

  1. Voer in een queryvenster dat is verbonden met de eerste replica het volgende script uit:

    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. Voer op Node 1 de opdracht in:

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

    Met deze opdracht opent u de Emacs-editor.

  3. Voer de volgende twee regels in de editor in:

    PMLogin
    
    <password>
    
  4. Houd de Ctrl toets ingedrukt en druk op Xen Com het bestand af te sluiten en op te slaan.

  5. Uitvoeren:

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

    om het bestand te vergrendelen.

  6. Herhaal stap 1-5 op de andere servers die fungeren als replica's.

De resources voor de beschikbaarheidsgroep maken in het Pacemaker-cluster (alleen extern)

Nadat u een beschikbaarheidsgroep in SQL Server hebt gemaakt, moet u de bijbehorende resources maken in Pacemaker wanneer u een clustertype Extern opgeeft. Er zijn twee resources gekoppeld aan een beschikbaarheidsgroep: de beschikbaarheidsgroep zelf en een IP-adres. Het configureren van de IP-adresresource is optioneel als u de listenerfunctionaliteit niet gebruikt, maar dit wordt aanbevolen.

De AG-resource die u maakt, is een type resource dat een kloon wordt genoemd. De AG-resource bevat kopieën op elk knooppunt en één beheerresource die de hoofdresource wordt genoemd. De hoofdserver is gekoppeld aan de server die als host fungeert voor de primaire replica. De andere resources hosten secundaire replica's (normaal of alleen voor configuraties) en kunnen worden gepromoveerd naar master in een failover.

  1. Maak de AG-resource met de volgende syntaxis:

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

    In dit voorbeeld NameForAGResource is dit de unieke naam die u aan deze clusterresource voor de beschikbaarheidsgroep geeft en AGName is dit de naam van de AG die u hebt gemaakt.

  2. Maak de IP-adresresource voor de beschikbaarheidsgroep (AG) die u koppelt aan de functionaliteit van de listener.

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

    In dit voorbeeld NameForIPResource is dit de unieke naam voor de IP-resource en IPAddress is dit het statische IP-adres dat u aan de resource toewijst.

  3. Configureer een colocatiebeperking om ervoor te zorgen dat het IP-adres en de AG-resource op hetzelfde knooppunt worden uitgevoerd.

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

    In dit voorbeeld NameForIPResource is dit de naam voor de IP-resource en NameForAGResource is dit de naam voor de AG-resource.

  4. Maak een volgorde beperking om ervoor te zorgen dat de AG-resource operationeel is voordat het IP-adres beschikbaar is. Hoewel de colocatiebeperking een volgordebeperking impliceert, wordt deze door deze stap afgedwongen.

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

    In dit voorbeeld NameForIPResource is dit de naam voor de IP-resource en NameForAGResource is dit de naam voor de AG-resource.

Volgende stap

In deze zelfstudie hebt u geleerd hoe u een beschikbaarheidsgroep maakt en configureert voor SQL Server in Linux. U hebt geleerd hoe u het volgende kunt doen:

  • Beschikbaarheidsgroepen inschakelen.
  • Ag-eindpunten en -certificaten maken.
  • Gebruik SQL Server Management Studio (SSMS) of Transact-SQL om een AG te maken.
  • Maak de sql Server-aanmelding en -machtigingen voor Pacemaker.
  • Maak AG-resources binnen een Pacemaker-cluster.

Voor de meeste AG-beheertaken, waaronder upgrades en failover, raadpleegt u: