Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Voer het volgende script uit op
LinAGN1om 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 ); GODoe 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 ); GOVoer 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 ); GOGebruik
scpof 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.cernaarLinAGN2enLinAGN3. - Kopieer
LinAGN2_Cert.cernaarLinAGN1enLinAGN3. - Kopieer
LinAGN3_Cert.cernaarLinAGN1enLinAGN2.
- Kopieer
Wijzig het eigendom en de groep die is gekoppeld aan de gekopieerde certificaatbestanden in
mssql.sudo chown mssql:mssql <CertFileName>Maak de aanmeldingen op exemplaarniveau en gebruikers die zijn gekoppeld aan
LinAGN2enLinAGN3opLinAGN1.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; GOVoorzichtigheid
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.
Herstel
LinAGN2_CertenLinAGN3_CertopLinAGN1. 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'; GOVerleen de aanmeldingen die zijn gekoppeld aan
LinAGN2enLinAGN3toestemming om verbinding te maken met het eindpunt opLinAGN1.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;Maak de aanmeldingen op exemplaarniveau en gebruikers die zijn gekoppeld aan
LinAGN1enLinAGN3opLinAGN2.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; GOHerstel
LinAGN1_CertenLinAGN3_CertopLinAGN2.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'; GOVerleen de aanmeldingen die zijn gekoppeld aan
LinAGN1enLinAGN3toestemming om verbinding te maken met het eindpunt opLinAGN2.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GOMaak de aanmeldingen op exemplaarniveau en gebruikers die zijn gekoppeld aan
LinAGN1enLinAGN2opLinAGN3.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; GOHerstel
LinAGN1_CertenLinAGN2_CertopLinAGN3.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'; GOVerleen de aanmeldingen die zijn gekoppeld aan
LinAG1enLinAGN2toestemming om verbinding te maken met het eindpunt opLinAGN3.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.
Vouw in SSMS AlwaysOn High Availabilityuit, klik met de rechtermuisknop op Beschikbaarheidsgroepenen selecteer wizard Nieuwe beschikbaarheidsgroep.
Klik in het dialoogvenster Inleiding op Volgende.
In het dialoogvenster "Beschikbaarheidsgroepopties opgeven" voert u een naam in voor de beschikbaarheidsgroep en selecteert u een clustertype
EXTERNALofNONEin de vervolgkeuzelijst. GebruikEXTERNALdeze functie wanneer u Pacemaker implementeert. GebruikenNONEvoor 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.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.
Selecteer in het dialoogvenster Replica's specificeren de optie Replica toevoegen.
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.
Herhaal de vorige twee stappen voor het exemplaar dat een alleen-configuratiereplica of een andere secundaire replica bevat.
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.
In het volgende voorbeeld ziet u een beschikbaarheidsgroep (AG) met twee replica's, een clustertype van Geen, en een configuratie-alleen-replica.
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.
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.
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:
Selecteer het tabblad Read-Only Routering.
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.
Kies elke URL en selecteer onderaan de leesbare kopieën. Als u meerdere selecties wilt uitvoeren, houdt u Shift ingedrukt of sleept u deze.
Selecteer Volgende.
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.
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.
Selecteer in het dialoogvenster Samenvatting Voltooien. Het proces om de beschikbaarheidsgroep te creëren begint nu.
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:
- AANMAKEN BESCHIKBAARHEIDSGROEP (Transact-SQL)
- WIJZIG BESCHIKBAARHEIDSGROEP (Transact-SQL)
- Alleen-lezenroutering configureren voor een AlwaysOn-beschikbaarheidsgroep
- een listener configureren voor een AlwaysOn-beschikbaarheidsgroep
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.
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 ); GOVoer 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; GOVoer 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.
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 ); GOEnkele dingen die u moet weten over deze configuratie:
-
AGNameis de naam van de beschikbaarheidsgroep. -
DBNameis de naam van de database die u gebruikt met de beschikbaarheidsgroep. Het kan ook een lijst met namen zijn, gescheiden door komma's. -
ListenerNameis een andere naam dan een van de onderliggende servers of knooppunten. Het is geregistreerd in DNS, samen metIPAddress. -
IPAddressis een IP-adres dat is gekoppeld aanListenerName. Het is ook uniek en niet hetzelfde als een van de servers of knooppunten. Toepassingen en eindgebruikers gebruikenListenerNameofIPAddressom verbinding te maken met de AG.-
SubnetMaskis het subnetmasker vanIPAddress. In SQL Server 2019 (15.x) en vorige versies is255.255.255.255deze waarde. In SQL Server 2022 (16.x) en latere versies is0.0.0.0deze waarde.
-
-
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; GOHerhaal 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.
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> ); GOIn dit voorbeeld:
-
AGNameis de naam van de beschikbaarheidsgroep. -
DBNameis de naam van de database die u gebruikt met de beschikbaarheidsgroep. Het kan ook een lijst met namen zijn, gescheiden door komma's. -
PortOfEndpointis het poortnummer dat wordt gebruikt door het eindpunt dat u maakt.-
PortOfInstanceis het poortnummer dat wordt gebruikt door het exemplaar van SQL Server.
-
-
ListenerNameis een naam die verschilt van die van de onderliggende replica's, maar die niet daadwerkelijk gebruikt wordt. -
PrimaryReplicaIPAddressis het IP-adres van de primaire replica.-
SubnetMaskis het subnetmasker vanIPAddress. In SQL Server 2019 (15.x) en vorige versies is255.255.255.255deze waarde. In SQL Server 2022 (16.x) en latere versies is0.0.0.0deze waarde.
-
-
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.
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; GOVoer op Node 1 de opdracht in:
sudo emacs /var/opt/mssql/secrets/passwdMet deze opdracht opent u de Emacs-editor.
Voer de volgende twee regels in de editor in:
PMLogin <password>Houd de
Ctrltoets ingedrukt en druk opXenCom het bestand af te sluiten en op te slaan.Uitvoeren:
sudo chmod 400 /var/opt/mssql/secrets/passwdom het bestand te vergrendelen.
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.
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=trueIn dit voorbeeld
NameForAGResourceis dit de unieke naam die u aan deze clusterresource voor de beschikbaarheidsgroep geeft enAGNameis dit de naam van de AG die u hebt gemaakt.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
NameForIPResourceis dit de unieke naam voor de IP-resource enIPAddressis dit het statische IP-adres dat u aan de resource toewijst.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 INFINITYIn dit voorbeeld
NameForIPResourceis dit de naam voor de IP-resource enNameForAGResourceis dit de naam voor de AG-resource.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
NameForIPResourceis dit de naam voor de IP-resource enNameForAGResourceis 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: