Een beschikbaarheidsgroep maken en configureren voor SQL Server in Linux
van toepassing op:SQL Server- - Linux
In deze zelfstudie wordt beschreven hoe u een beschikbaarheidsgroep (AG) maakt en configureert voor SQL Server in Linux. In tegenstelling tot SQL Server 2016 (13.x) en eerder in Windows, kunt u een AG inschakelen met of zonder eerst het onderliggende Pacemaker-cluster te maken. Integratie met het cluster wordt, indien nodig, pas later uitgevoerd.
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. Onder Linux moet u mssql-conf
gebruiken om de functie in te schakelen. Er zijn twee manieren om de functie beschikbaarheidsgroepen in te schakelen: gebruik het hulpprogramma mssql-conf
of bewerk het mssql.conf
bestand handmatig.
Belangrijk
De AG-functie moet ingeschakeld zijn voor replica's die alleen voor configuratie zijn, zelfs op SQL Server Express.
Het hulpprogramma mssql-conf gebruiken
Geef bij een prompt de volgende opdracht op:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Het bestand mssql.conf bewerken
U kunt het mssql.conf
bestand, dat zich onder de map /var/opt/mssql
bevindt, ook wijzigen om de volgende regels toe te voegen:
[hadr]
hadr.hadrenabled = 1
SQL Server opnieuw starten
Nadat u beschikbaarheidsgroepen hebt ingeschakeld, zoals in Windows, moet u SQL Server opnieuw starten met behulp van 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.
Het maken van eindpunten en het herstellen van certificaten kan alleen worden uitgevoerd via 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
, LinAGN2
en LinAGN3
.
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
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
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
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
naarLinAGN2
enLinAGN3
. - Kopieer
LinAGN2_Cert.cer
naarLinAGN1
enLinAGN3
. - Kopieer
LinAGN3_Cert.cer
naarLinAGN1
enLinAGN2
.
- 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
LinAGN2
enLinAGN3
opLinAGN1
.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.
Herstel
LinAGN2_Cert
enLinAGN3_Cert
opLinAGN1
. 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
Verleen de aanmeldingen die zijn gekoppeld aan
LinAG2
enLinAGN3
toestemming om verbinding te maken met het eindpunt opLinAGN1
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Maak de logins en gebruikers op exemplaarniveau aan die zijn gekoppeld aan
LinAGN1
enLinAGN3
opLinAGN2
.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
Herstel
LinAGN1_Cert
enLinAGN3_Cert
opLinAGN2
.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
Geef de logins verbonden aan
LinAG1
enLinAGN3
toestemming om verbinding te maken met het eindpunt opLinAGN2
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Maak de aanmeldingen en gebruikers op exemplaarniveau die zijn gekoppeld aan
LinAGN1
enLinAGN2
opLinAGN3
.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
Herstel
LinAGN1_Cert
enLinAGN2_Cert
opLinAGN3
.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
Geef de aanmeldingen die aan
LinAG1
enLinAGN2
zijn gekoppeld de toestemming om verbinding te maken met het eindpunt opLinAGN3
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO 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
EXTERNAL
ofNONE
in de vervolgkeuzelijst. Extern moet worden gebruikt wanneer Pacemaker wordt geïmplementeerd. Geen is bedoeld 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.Selecteer in het dialoogvenster 'Databases selecteren' de databases die zullen deelnemen aan de beschikbaarheidsgroep. Elke database moet een volledige back-up hebben voordat deze kan worden toegevoegd aan een beschikbaarheidsgroep. 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 moeten nu 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 secundaire bestanden gebruikt of een beschikbaarheidsgroep maakt met het clustertype Geen voor leesschaal, kunt u een listener maken door het tabblad Listener te selecteren. Een listener kan ook later worden toegevoegd. Als u een listener wilt maken, kiest u de optie Een 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. Houd er rekening mee dat voor een AG met het clustertype Geen het IP-adres statisch moet zijn en moet worden ingesteld op het IP-adres van de primaire groep.
Als er een listener is gemaakt voor leesbare scenario's, staat SSMS 17.3 of hoger het maken van de alleen-lezen routering in de wizard toe. Het kan ook later worden toegevoegd 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, moet u handmatig back-ups maken en kopiëren, en de machtigingen voor de back-upbestanden instellen 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. De listener en alleen-lezenroutering kunnen worden geconfigureerd nadat de beschikbaarheidsgroep is gemaakt. De AG zelf kan worden gewijzigd met ALTER AVAILABILITY GROUP
, maar het clustertype kan niet worden gewijzigd in SQL Server 2017 (14.x). Als u geen AG met een clustertype Extern wilt maken, moet u deze verwijderen en opnieuw maken met het clustertype Geen. Meer informatie en andere opties vindt u op de volgende koppelingen:
- CREATE AVAILABILITY GROUP (Transact-SQL)
- ALTER AVAILABILITY GROUP (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 uit op het knooppunt dat de primaire replica is die de volledig lees- en schrijfklaar 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
Voer het volgende uit in een queryvenster dat is aangesloten op de andere replica om de replica aan de AG te koppelen en het seedingproces van de primaire naar de secundaire replica te starten.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
In een queryvenster dat is verbonden met de enige replica van de configuratie, voegt u deze toe aan de beschikbaarheidsgroep.
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 replica's en hoe alleen-lezenroutering kan worden geconfigureerd in het kader van het maken van de initiële beschikbaarheidsgroep.
Voer de actie uit op het knooppunt dat de primaire replica zal zijn en de volledig lees-/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 wordt 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/knooppunten. Het wordt geregistreerd in DNS, samen metIPAddress
. -
IPAddress
is een IP-adres dat is gekoppeld aanListenerName
. Het is ook uniek en niet hetzelfde als een van de servers/knooppunten. Toepassingen en eindgebruikers gebruikenListenerName
ofIPAddress
om verbinding te maken met de AG. -
SubnetMask
is het subnetmasker vanIPAddress
. In SQL Server 2019 (15.x) en vorige versies is dit255.255.255.255
. In SQL Server 2022 (16.x) en latere versies is dit0.0.0.0
.
-
Voer in een queryvenster dat is verbonden met de andere replica het volgende uit om de replica aan de beschikbaarheidsgroep 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
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. Het wordt gebruikt voor scenario's met schaalbare leesopties, waarbij geen failover wordt verwacht. Hiermee maakt u de listener die feitelijk de primaire replica is, en verzorgt de alleen-lezenroutering met behulp van de round robin-functionaliteit.
- Voer de operatie uit op het knooppunt dat de primaire replica is, die de volledig lees- en schrijfbare kopie 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
Waar:
-
AGName
is de naam van de beschikbaarheidsgroep. -
DBName
is de naam van de database die wordt 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 is gemaakt. -
PortOfInstance
is het poortnummer dat wordt gebruikt door het exemplaar van SQL Server. -
ListenerName
is een andere naam dan een van de onderliggende replica's, maar wordt niet daadwerkelijk gebruikt. -
PrimaryReplicaIPAddress
is het IP-adres van de primaire replica. -
SubnetMask
is het subnetmasker vanIPAddress
. In SQL Server 2019 (15.x) en vorige versies is dit255.255.255.255
. In SQL Server 2022 (16.x) en latere versies is dit0.0.0.0
.
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 onder 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; GO
Voer op Node 1 de opdracht in
sudo emacs /var/opt/mssql/secrets/passwd
Hiermee opent u de Emacs-editor.
Voer de volgende twee regels in de editor in:
PMLogin <password>
Houd de
Ctrl
toets ingedrukt en druk opX
enC
om het bestand af te sluiten en op te slaan.Uitvoeren
sudo chmod 400 /var/opt/mssql/secrets/passwd
om het bestand te vergrendelen.
Herhaal stap 1-5 op de andere servers die als replica's fungeren.
De resources voor de beschikbaarheidsgroep maken in het Pacemaker-cluster (alleen extern)
Nadat een beschikbaarheidsgroep is gemaakt in SQL Server, moeten de bijbehorende resources worden gemaakt in Pacemaker wanneer een clustertype Extern is opgegeven. Er zijn twee resources gekoppeld aan een AG: de AG zelf en een IP-adres. Het configureren van de IP-adresresource is optioneel als u de listenerfunctionaliteit niet gebruikt, maar wordt aanbevolen.
De AG-resource die u hebt gemaakt, is een type resource dat een kloonwordt genoemd. De AG-resource bevat in wezen kopieën op elk knooppunt en er is één beheerresource met de naam hoofd-. 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.
Notitie
Communicatie zonder vooroordelen
Dit artikel bevat verwijzingen naar de term slave, een term die Microsoft aanstootgevend acht wanneer deze in deze context wordt gebruikt. De term wordt weergegeven in dit artikel omdat deze momenteel in de software wordt weergegeven. Wanneer de term uit de software wordt verwijderd, wordt deze uit het artikel verwijderd.
Maak de AG-resource met de volgende syntaxis:
sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s --master meta notify=true
Waar
NameForAGResource
de unieke naam is die aan deze clusterresource voor de AG wordt gegeven enAGName
de naam is van de AG die is gemaakt.Op RHEL 7.7 en Ubuntu 18.04 en latere versies kunt u een waarschuwing tegenkomen met het gebruik van
--master
of een fout zoalssqlag_monitor_0 on ag1 'not configured' (6): call=6, status=complete, exitreason='Resource must be configured with notify=true'
. Gebruik het volgende om deze situatie te voorkomen:sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s master notify=true
Maak de IP-adresbron voor de AG die geassocieerd zal worden met de luisteraar-functionaliteit.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>
Waar
NameForIPResource
de unieke naam voor de IP-resource is enIPAddress
het statische IP-adres is dat aan de resource is toegewezen.Om ervoor te zorgen dat het IP-adres en de AG-resource op hetzelfde knooppunt worden uitgevoerd, moet er een colocatiebeperking worden geconfigureerd.
sudo pcs constraint colocation add <NameForIPResource> <NameForAGResource>-master INFINITY with-rsc-role=Master
Waar
NameForIPResource
de naam voor de IP-resource is enNameForAGResource
de naam voor de AG-resource is.Maak een volgorde beperking om ervoor te zorgen dat de AG-resource operationeel is voordat het IP-adres beschikbaar is. Hoewel de colocatiebeperking een bestelbeperking impliceert, wordt dit afgedwongen.
sudo pcs constraint order promote <NameForAGResource>-master then start <NameForIPResource>
Waar
NameForIPResource
de naam voor de IP-resource is enNameForAGResource
de naam voor de AG-resource is.
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: