Skapa och konfigurera en tillgänglighetsgrupp för SQL Server i Linux
gäller för:SQL Server – Linux
Den här självstudien beskriver hur du skapar och konfigurerar en tillgänglighetsgrupp (AG) för SQL Server i Linux. Till skillnad från SQL Server 2016 (13.x) och tidigare versioner i Windows kan du aktivera en AG (tillgänglighetsgrupp) antingen genom att först skapa det underliggande Pacemaker-klustret eller utan att skapa det först. Integrering med klustret görs vid behov inte förrän senare.
Handledningen innehåller följande uppgifter:
- Aktivera tillgänglighetsgrupper.
- Skapa slutpunkter och certifikat för tillgänglighetsgrupper.
- Använd SQL Server Management Studio (SSMS) eller Transact-SQL för att skapa en tillgänglighetsgrupp.
- Skapa SQL Server-inloggning och behörigheter för Pacemaker.
- Skapa resurser för tillgänglighetsgrupp i ett Pacemaker-kluster (endast extern typ).
Förutsättningar
Distribuera pacemakerklustret med hög tillgänglighet enligt beskrivningen i Distribuera ett Pacemaker-kluster för SQL Server på Linux.
Aktivera funktionen tillgänglighetsgrupper
Till skillnad från i Windows kan du inte använda PowerShell eller SQL Server Configuration Manager för att aktivera tillgänglighetsgrupper (AG). Under Linux måste du använda mssql-conf
för att aktivera funktionen. Det finns två sätt att aktivera funktionen tillgänglighetsgrupper: använd verktyget mssql-conf
eller redigera mssql.conf
filen manuellt.
Viktig
Ag-funktionen måste vara aktiverad för repliker med endast konfiguration, även på SQL Server Express.
Använda verktyget mssql-conf
I en prompt utfärdar du följande kommando:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Redigera filen mssql.conf
Du kan också ändra filen mssql.conf
, som finns under mappen /var/opt/mssql
, för att lägga till följande rader:
[hadr]
hadr.hadrenabled = 1
Starta om SQL Server
När du har aktiverat tillgänglighetsgrupper, som i Windows, måste du starta om SQL Server med följande kommando:
sudo systemctl restart mssql-server
Skapa tillgänglighetsgruppens slutpunkter och certifikat
En tillgänglighetsgrupp använder TCP-slutpunkter för kommunikation. Under Linux stöds slutpunkter för en AG endast om certifikat används för autentisering. Du måste återställa certifikatet från en instans på alla andra instanser som kommer att delta som repliker i samma tillgänglighetsgrupp. Certifikatprocessen krävs även för en replika som endast är för konfiguration.
Det går bara att skapa slutpunkter och återställa certifikat via Transact-SQL. Du kan också använda icke-SQL Server-genererade certifikat. Du behöver också en process för att hantera och ersätta eventuella certifikat som upphör att gälla.
Viktig
Om du planerar att använda SQL Server Management Studio-guiden för att skapa disponibilitetsgruppen måste du fortfarande skapa och återställa certifikaten med hjälp av Transact-SQL i Linux.
Fullständig syntax för de alternativ som är tillgängliga för de olika kommandona (inklusive säkerhet) finns i:
Not
Även om du skapar en tillgänglighetsgrupp använder slutpunkttypen FOR DATABASE_MIRRORING
, eftersom vissa underliggande aspekter en gång delades med den numera föråldrade funktionen.
Det här exemplet skapar certifikat för en konfiguration med tre noder. Instansnamnen är LinAGN1
, LinAGN2
och LinAGN3
.
Kör följande skript på
LinAGN1
för att skapa huvudnyckeln, certifikatet och slutpunkten och säkerhetskopiera certifikatet. I det här exemplet används den typiska TCP-porten 5022 för slutpunkten.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
Gör samma sak på
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
Utför slutligen samma sekvens på
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
Med hjälp av
scp
eller något annat verktyg kopierar du säkerhetskopiorna av certifikatet till varje nod som ska ingå i tillgänglighetsgruppen.I det här exemplet:
- Kopiera
LinAGN1_Cert.cer
tillLinAGN2
ochLinAGN3
. - Kopiera
LinAGN2_Cert.cer
tillLinAGN1
ochLinAGN3
. - Kopiera
LinAGN3_Cert.cer
tillLinAGN1
ochLinAGN2
.
- Kopiera
Ändra ägarskap och gruppen som är associerad med de kopierade certifikatfilerna till
mssql
.sudo chown mssql:mssql <CertFileName>
Skapa inloggningar på instansnivå och användare som är associerade med
LinAGN2
ochLinAGN3
på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
Försiktighet
Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.
Återställ
LinAGN2_Cert
ochLinAGN3_Cert
påLinAGN1
. Att ha de andra replikernas certifikat är en viktig aspekt av AGs kommunikation och säkerhet.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
Bevilja inloggningarna som är associerade med
LinAG2
ochLinAGN3
behörighet att ansluta till slutpunkten påLinAGN1
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Skapa inloggningar på instansnivå och användare som är associerade med
LinAGN1
ochLinAGN3
på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
Återställ
LinAGN1_Cert
ochLinAGN3_Cert
på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
Bevilja inloggningarna som är associerade med
LinAG1
ochLinAGN3
behörighet att ansluta till slutpunkten påLinAGN2
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Skapa inloggningar på instansnivå och användare som är associerade med
LinAGN1
ochLinAGN2
på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
Återställ
LinAGN1_Cert
ochLinAGN2_Cert
på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
Bevilja inloggningarna som är associerade med
LinAG1
ochLinAGN2
behörighet att ansluta till slutpunkten påLinAGN3
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Skapa tillgänglighetsgruppen
Det här avsnittet beskriver hur du använder SQL Server Management Studio (SSMS) eller Transact-SQL för att skapa tillgänglighetsgruppen för SQL Server.
Använda SQL Server Management Studio
Det här avsnittet visar hur du skapar en tillgänglighetsgrupp med en klustertyp av extern med hjälp av SSMS med guiden Ny tillgänglighetsgrupp.
I SSMS utökar du Always On High Availability, högerklickar på Tillgänglighetsgrupperoch väljer Ny Tillgänglighetsgruppsguiden.
I dialogrutan Introduktion väljer du Nästa.
I dialogrutan Ange alternativ för tillgänglighetsgrupp anger du ett namn för tillgänglighetsgruppen och väljer en klustertyp av
EXTERNAL
ellerNONE
i listrutan. När Pacemaker kommer att distribueras, ska extern användas. Ingen är avsedd för specialiserade scenarier, till exempel utskalning av läsning. Det är valfritt att välja alternativet för hälsoidentifiering på databasnivå. Mer information om det här alternativet finns i alternativet för hälsoidentifiering på databasnivå för tillgänglighetsgrupp. Välj Nästa.I dialogrutan Välj databaser väljer du de databaser som ska delta i tillgänglighetsgruppen. Varje databas måste ha en fullständig säkerhetskopia innan den kan läggas till i en tillgänglighetsgrupp (AG). Välj Nästa.
I dialogrutan Ange repliker väljer du Lägg till replik.
I dialogrutan Anslut till server anger du namnet på Den Linux-instans av SQL Server som ska vara den sekundära repliken och autentiseringsuppgifterna för att ansluta. Välj Anslut.
Upprepa de föregående två stegen för den instans som ska innehålla enbart en konfigurationsreplik eller en annan sekundär replik.
Alla tre instanserna bör nu visas i dialogrutan Ange repliker. Om du använder en klustertyp av Extern kontrollerar du att tillgänglighetsläget matchar den primära repliken och redundansläget är inställt på Externt för den sekundära repliken som ska vara en sann sekundär replik. För konfigurationsrepliken väljer du ett tillgänglighetsläge för endast konfiguration.
I följande exempel visas en AG med två repliker, den externa klustertypen och en replik som endast är konfiguration.
I följande exempel visas en tillgänglighetsgrupp med två repliker, utan klustertyp, och endast en konfigurationsreplik.
Om du vill ändra inställningarna för säkerhetskopiering väljer du fliken Inställningar för säkerhetskopiering. Mer information om säkerhetskopieringsinställningar med AG:er finns i Konfigurera säkerhetskopior på sekundära repliker i en AlwaysOn-tillgänglighetsgrupp.
Om du använder läsbara sekundärrepliker eller skapar en tillgänglighetsgrupp (AG) med klustertypen Ingen för lässkala, kan du skapa en lyssnare genom att välja fliken Listener. En lyssnare kan också läggas till senare. Om du vill skapa en lyssnare väljer du alternativet Skapa en tillgänglighetsgruppslyssnare och anger ett namn, en TCP/IP-port och om du vill använda en statisk eller automatiskt tilldelad DHCP IP-adress. Kom ihåg att för en tillgänglighetsgrupp med klustertypen Ingen ska IP-adressen vara statisk och ställas in på den primära IP-adressen.
Om en lyssnare skapas för läsbara scenarier kan SSMS 17.3 eller senare skapa skrivskyddad routning i guiden. Det kan också läggas till senare via SSMS eller Transact-SQL. Så här lägger du till skrivskyddad routning nu:
Välj fliken Read-Only Routning.
Ange URL:erna för de skrivskyddade replikerna. Dessa URL:er liknar slutpunkterna, förutom att de använder porten för instansen, inte slutpunkten.
Välj varje URL och välj de läsbara replikerna längst ned. Håll ned SKIFT eller select-drag om du vill välja flera val.
Välj Nästa.
Välj hur de sekundära replikerna ska initieras. Standardvärdet är att använda automatisk seeding, som kräver samma sökväg på alla servrar som deltar i tillgänglighetsgruppen. Du kan också låta guiden göra en säkerhetskopia, kopiera och återställa (det andra alternativet); ha det anslutet om du manuellt har säkerhetskopierat, kopierat och återställt databasen på replikerna (tredje alternativet); eller lägg till databasen senare (sista alternativet). Precis som med certifikat måste behörigheter för säkerhetskopieringsfilerna anges på de andra replikerna om du manuellt gör säkerhetskopior och kopierar dem. Välj Nästa.
Om inte allt kommer tillbaka som lyckat i valideringsdialogrutan, undersök vad som har gått fel. Vissa varningar är acceptabla och inte dödliga, till exempel om du inte skapar en lyssnare. Välj Nästa.
I dialogrutan Sammanfattning väljer du Slutför. Processen för att skapa tillgänglighetsgruppen börjar nu.
När AG-skapandet är klart väljer du Stäng i resultaten. Nu kan du se AG på replikerna i de dynamiska hanteringsvyerna och under mappen Always On High Availability i SSMS.
Använd Transact-SQL
Det här avsnittet visar exempel på hur du skapar en AG (tillgänglighetsgrupp) med hjälp av Transact-SQL. Lyssnaren och skrivskyddad routning kan konfigureras när tillgänglighetsgruppen har skapats. Tillgänglighetsgruppen (AG) kan ändras med ALTER AVAILABILITY GROUP
, men det går inte att ändra klustertypen i SQL Server 2017 (14.x). Om du inte menade att skapa en tillgänglighetsgrupp med klustertypen Extern måste du ta bort den och återskapa den med klustertypen Ingen. Mer information och andra alternativ finns på följande länkar:
- SKAPA TILLGÄNGLIGHETSGRUPP (Transact-SQL)
- ÄNDRA TILLGÄNGLIGHETSGRUPP (Transact-SQL)
- Konfigurera skrivskyddad routning för en AlwaysOn-tillgänglighetsgrupp
- Konfigurera en lyssnare för en AlwaysOn-tillgänglighetsgrupp
Exempel A: Två repliker med enbart en konfigurationsreplik (extern klustertyp)
Det här exemplet visar hur du skapar en AG med två repliker som använder en replik som bara har konfiguration.
Kör på den nod som ska vara den primära repliken som innehåller den fullständigt lästa/skrivbara kopian av databaserna. I det här exemplet används automatisk seeding.
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
I ett frågefönster som är anslutet till den andra repliken kör du följande för att ansluta repliken till tillgänglighetsgruppen och starta seedingprocessen från den primära repliken till den sekundära repliken.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
I ett frågefönster som är anslutet till den enda konfigurationsrepliken ansluter du den till tillgänglighetsgruppen.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
Exempel B: Tre repliker med skrivskyddad routning (extern klustertyp)
Det här exemplet visar tre kompletta repliker och hur endast-läsbar routning kan konfigureras som en del av den initiala skapandet av tillgänglighetsgruppen.
Kör på den nod som ska vara den primära repliken och som innehåller den fullständiga läs- och skrivbara kopian av databaserna. I det här exemplet används automatisk seeding.
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ågra saker att notera om den här konfigurationen:
-
AGName
är namnet på tillgänglighetsgruppen. -
DBName
är namnet på databasen som används med tillgänglighetsgruppen. Det kan också vara en lista med namn avgränsade med kommatecken. -
ListenerName
är ett namn som skiljer sig från någon av de underliggande servrarna/noderna. Den registreras i DNS tillsammans medIPAddress
. -
IPAddress
är en IP-adress som är associerad medListenerName
. Det är också unikt och inte detsamma som någon av servrarna/noderna. Applikationer och slutanvändare använder antingenListenerName
ellerIPAddress
för att ansluta till AG. -
SubnetMask
är nätmasken förIPAddress
. I SQL Server 2019 (15.x) och tidigare versioner är detta255.255.255.255
. I SQL Server 2022 (16.x) och senare versioner är detta0.0.0.0
.
-
I ett frågefönster som är anslutet till den andra repliken, kör du följande för att ansluta repliken till tillgänglighetsgruppen (AG) och initiera seeding från den primära till den sekundära repliken.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Upprepa steg 2 för den tredje repliken.
Exempel C: Två repliker med skrivskyddad routing (utan klustertyp)
Det här exemplet visar skapandet av en konfiguration med två repliker med en klustertyp av Ingen. Den används för scenariot med lässkala där ingen felövergång förväntas. Detta skapar lyssnaren som faktiskt är den primära replikan och implementerar skrivskyddad routing med hjälp av rundtursfunktionaliteten.
- Kör på den nod som ska vara den primära repliken som innehåller den fullständigt lästa/skrivbara kopian av databaserna. I det här exemplet används automatisk frösättning.
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
Var:
-
AGName
är namnet på tillgänglighetsgruppen. -
DBName
är namnet på databasen som ska användas med tillgänglighetsgruppen. Det kan också vara en lista med namn avgränsade med kommatecken. -
PortOfEndpoint
är det portnummer som används av slutpunkten som skapas. -
PortOfInstance
är portnumret som används av instansen av SQL Server. -
ListenerName
är ett namn som skiljer sig från någon av de underliggande kopiorna men används inte faktiskt. -
PrimaryReplicaIPAddress
är IP-adressen för den primära repliken. -
SubnetMask
är nätmasken förIPAddress
. I SQL Server 2019 (15.x) och tidigare versioner är detta255.255.255.255
. I SQL Server 2022 (16.x) och senare versioner är detta0.0.0.0
.
Anslut den sekundära repliken till tillgänglighetsgruppen och starta automatisk sådd.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = NONE); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Skapa SQL Server-inloggning och behörigheter för Pacemaker
Ett pacemakerkluster med hög tillgänglighet som ligger bakom SQL Server i Linux behöver åtkomst till SQL Server-instansen och behörigheter för själva tillgänglighetsgruppen. De här stegen skapar inloggningen och de associerade behörigheterna, tillsammans med en fil som talar om för Pacemaker hur man loggar in på SQL Server.
Kör följande skript i ett frågefönster som är anslutet till den första repliken:
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
På nod 1 anger du kommandot
sudo emacs /var/opt/mssql/secrets/passwd
Då öppnas Emacs-redigeraren.
Ange följande två rader i redigeraren:
PMLogin <password>
Håll ned
Ctrl
och tryck sedan påX
och sedanC
för att avsluta och spara filen.Utföra
sudo chmod 400 /var/opt/mssql/secrets/passwd
för att låsa filen.
Upprepa steg 1–5 på de andra servrarna som ska fungera som repliker.
Skapa resurser för tillgänglighetsgrupp i Pacemaker-klustret (endast externt)
När en tillgänglighetsgrupp har skapats i SQL Server måste motsvarande resurser skapas i Pacemaker när en klustertyp av Extern har angetts. Det finns två resurser som är associerade med en AG: själva AG och en IP-adress. Det är valfritt att konfigurera IP-adressresursen om du inte använder lyssnarfunktionen, men rekommenderas.
Resursen för tillgänglighetsgruppen som du skapade är en typ av resurs som kallas klon. Tillgänglighetsgruppens resurs har i huvudsak kopior på varje nod, och det finns en styrresurs som kallas master. Huvudservern är associerad med servern som är värd för den primära repliken. De andra resurserna är värdar för sekundära repliker (vanliga eller endast konfigurationsbaserade) och kan uppgraderas till primär replik vid en failover.
Anteckning
Biasfri kommunikation
Den här artikeln innehåller referenser till termen slave, en term som Microsoft anser vara stötande när den används i den här kontexten. Termen visas i den här artikeln eftersom den för närvarande visas i programvaran. När termen tas bort från programvaran tar vi bort den från artikeln.
Skapa ag-resursen med följande syntax:
sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s --master meta notify=true
Där
NameForAGResource
är det unika namnet på den här klusterresursen för AG:n, ochAGName
är namnet på den AG som skapades.På RHEL 7.7 och Ubuntu 18.04 och senare versioner kan du stöta på en varning med hjälp av
--master
eller ett fel somsqlag_monitor_0 on ag1 'not configured' (6): call=6, status=complete, exitreason='Resource must be configured with notify=true'
. Undvik den här situationen genom att använda:sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s master notify=true
Skapa IP-adressresursen för AG som ska kopplas till lyssnarfunktionen.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>
Där
NameForIPResource
är det unika namnet på IP-resursen ochIPAddress
är den statiska IP-adress som tilldelats resursen.För att säkerställa att IP-adressen och tillgänglighetsgruppens resurs körs på samma nod måste en samlokaliseringsbegränsning konfigureras.
sudo pcs constraint colocation add <NameForIPResource> <NameForAGResource>-master INFINITY with-rsc-role=Master
Där
NameForIPResource
är namnet på IP-resursen ochNameForAGResource
är namnet på AG-resursen.Skapa en beställningsbegränsning för att säkerställa att AG-resursen är uppe och fungerar före IP-adressen. Även om samlokaliseringsbegränsningen innebär en ordningsbegränsning, framtvingar detta den.
sudo pcs constraint order promote <NameForAGResource>-master then start <NameForIPResource>
Där
NameForIPResource
är namnet på IP-resursen ochNameForAGResource
är namnet på AG-resursen.
Nästa steg
I den här självstudien har du lärt dig hur du skapar och konfigurerar en tillgänglighetsgrupp för SQL Server i Linux. Du har lärt dig att:
- Aktivera tillgänglighetsgrupper.
- Skapa AG-slutpunkter och certifikat.
- Använd SQL Server Management Studio (SSMS) eller Transact-SQL för att skapa en tillgänglighetsgrupp (AG).
- Skapa SQL Server-inloggning och behörigheter för Pacemaker.
- Skapa AG-resurser i ett Pacemaker-kluster.
De flesta administrationsuppgifter för AG, inklusive uppgraderingar och failover, finns i: