Vytvoření a konfigurace skupiny dostupnosti pro SQL Server v Linuxu
platí pro:SQL Server – Linux
V tomto kurzu se dozvíte, jak vytvořit a nakonfigurovat skupinu dostupnosti (AG) pro SQL Server v Linuxu. Na rozdíl od SQL Serveru 2016 (13.x) a starších verzí na Windows můžete nejprve povolit skupinu dostupnosti (AG) s vytvořením základního clusteru Pacemaker nebo bez něj. Integrace s clusterem není v případě potřeby dokončena až později.
Kurz obsahuje následující úlohy:
- Povolte skupiny dostupnosti.
- Vytvořte koncové body skupiny dostupnosti a certifikáty.
- K vytvoření skupiny dostupnosti použijte SQL Server Management Studio (SSMS) nebo Transact-SQL.
- Vytvořte pro Pacemaker přihlašovací údaje a oprávnění k SQL Serveru.
- Vytvoření zdrojů pro skupiny dostupnosti v clusteru Pacemaker (externí typ pouze)
Požadavky
Nasaďte cluster s vysokou dostupností Pacemakeru, jak je popsáno v tématu Nasazení clusteru Pacemaker pro SQL Server v Linuxu.
Povolení funkce skupin dostupnosti
Na rozdíl od Windows nemůžete k povolení funkce skupin dostupnosti (AG) použít PowerShell ani SQL Server Configuration Manager. V linuxu musíte tuto funkci povolit pomocí mssql-conf
. Existují dva způsoby povolení funkce skupin dostupnosti: použijte nástroj mssql-conf
nebo upravte soubor mssql.conf
ručně.
Důležitý
Funkce skupiny dostupnosti musí být povolena pro repliky jen pro konfiguraci, a to i na SQL Serveru Express.
Použití nástroje mssql-conf
Na příkazovém řádku zadejte následující příkaz:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Úprava souboru mssql.conf
Můžete také upravit soubor mssql.conf
umístěný ve složce /var/opt/mssql
a přidat následující řádky:
[hadr]
hadr.hadrenabled = 1
Restartování SQL Serveru
Po povolení skupin dostupnosti, jako ve Windows, musíte sql Server restartovat pomocí následujícího příkazu:
sudo systemctl restart mssql-server
Vytvoření koncových bodů skupiny dostupnosti a certifikátů
Skupina dostupnosti používá ke komunikaci koncové body PROTOKOLU TCP. V Linuxu jsou koncové body skupiny dostupnosti podporovány pouze pokud se k ověřování používají certifikáty. Certifikát musíte obnovit z jedné instance ve všech ostatních instancích, které se budou účastnit jako repliky ve stejné skupině dostupnosti. Proces certifikátu se vyžaduje i pro repliku jen pro konfiguraci.
Vytváření koncových bodů a obnovování certifikátů je možné provádět pouze prostřednictvím jazyka Transact-SQL. Můžete také používat negenerované certifikáty SQL Serveru. Potřebujete také proces správy a nahrazení všech certifikátů, jejichž platnost vyprší.
Důležitý
Pokud plánujete použít průvodce SQL Server Management Studio k vytvoření AG, budete muset certifikáty vytvořit a obnovit pomocí Transact-SQL v Linuxu.
Úplnou syntaxi možností dostupných pro různé příkazy (včetně zabezpečení) najdete v následujících informacích:
Poznámka
Přestože vytváříte skupinu dostupnosti, typ koncového bodu používá FOR DATABASE_MIRRORING
, protože některé základní aspekty byly jednou sdíleny s aktuálně zastaralou funkcí.
Tento příklad vytvoří certifikáty pro konfiguraci se třemi uzly. Názvy instancí jsou LinAGN1
, LinAGN2
a LinAGN3
.
Spuštěním následujícího skriptu na
LinAGN1
vytvořte hlavní klíč, certifikát a koncový bod a zálohujte certifikát. V tomto příkladu se pro koncový bod používá typický port TCP 5022.CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN1_Cert WITH SUBJECT = 'LinAGN1 AG Certificate'; GO BACKUP CERTIFICATE LinAGN1_Cert TO FILE = '/var/opt/mssql/data/LinAGN1_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN1_Cert, ROLE = ALL ); GO
Totéž udělejte na
LinAGN2
:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN2_Cert WITH SUBJECT = 'LinAGN2 AG Certificate'; GO BACKUP CERTIFICATE LinAGN2_Cert TO FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN2_Cert, ROLE = ALL ); GO
Nakonec proveďte stejnou sekvenci na
LinAGN3
:CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master-key-password>'; GO CREATE CERTIFICATE LinAGN3_Cert WITH SUBJECT = 'LinAGN3 AG Certificate'; GO BACKUP CERTIFICATE LinAGN3_Cert TO FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO CREATE ENDPOINT AGEP STATE = STARTED AS TCP ( LISTENER_PORT = 5022, LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE LinAGN3_Cert, ROLE = ALL ); GO
Pomocí
scp
nebo jiného nástroje zkopírujte zálohy certifikátu do každého uzlu, který patří do AG.V tomto příkladu:
- Zkopírujte
LinAGN1_Cert.cer
doLinAGN2
aLinAGN3
. - Zkopírujte
LinAGN2_Cert.cer
doLinAGN1
aLinAGN3
. - Zkopírujte
LinAGN3_Cert.cer
doLinAGN1
aLinAGN2
.
- Zkopírujte
Změňte vlastnictví a skupinu přidruženou ke zkopírovaným souborům certifikátů na
mssql
.sudo chown mssql:mssql <CertFileName>
Vytvořte přihlášení na úrovni instance a uživatele přidružené k
LinAGN2
aLinAGN3
naLinAGN1
.CREATE LOGIN LinAGN2_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN2_User FOR LOGIN LinAGN2_Login; GO CREATE LOGIN LinAGN3_Login WITH PASSWORD = '<password>'; CREATE USER LinAGN3_User FOR LOGIN LinAGN3_Login; GO
Opatrnost
Vaše heslo by mělo postupovat podle výchozích zásad hesel SQL Serveru . Ve výchozím nastavení musí heslo obsahovat alespoň osm znaků a musí obsahovat znaky ze tří z následujících čtyř sad: velká písmena, malá písmena, číslice se základem 10 a symboly. Hesla můžou mít délku až 128 znaků. Používejte hesla, která jsou co nejdéle a složitá.
Obnovit
LinAGN2_Cert
aLinAGN3_Cert
naLinAGN1
. Důležitým aspektem komunikace a zabezpečení skupiny dostupnosti je mít certifikáty ostatních replik.CREATE CERTIFICATE LinAGN2_Cert AUTHORIZATION LinAGN2_User FROM FILE = '/var/opt/mssql/data/LinAGN2_Cert.cer'; GO CREATE CERTIFICATE LinAGN3_Cert AUTHORIZATION LinAGN3_User FROM FILE = '/var/opt/mssql/data/LinAGN3_Cert.cer'; GO
Udělte přihlašovacím údajům přidruženým k
LinAG2
aLinAGN3
oprávnění pro připojení ke koncovému bodu vLinAGN1
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Vytvořte přihlášení na úrovni instance a uživatele přidružené k
LinAGN1
aLinAGN3
naLinAGN2
.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
Obnovte
LinAGN1_Cert
aLinAGN3_Cert
naLinAGN2
.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
Udělte přihlašovacím údajům přidruženým k
LinAG1
aLinAGN3
oprávnění pro připojení ke koncovému bodu vLinAGN2
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GO
Vytvořte přihlášení na úrovni instance a uživatele přidružené k
LinAGN1
aLinAGN2
naLinAGN3
.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
Obnovte
LinAGN1_Cert
aLinAGN2_Cert
naLinAGN3
.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
Udělte přihlašovacím údajům přidruženým k
LinAG1
aLinAGN2
oprávnění pro připojení ke koncovému bodu vLinAGN3
.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GO GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Vytvoření skupiny dostupnosti
Tato část popisuje, jak používat SQL Server Management Studio (SSMS) nebo Transact-SQL k vytvoření skupiny dostupnosti pro SQL Server.
Použití aplikace SQL Server Management Studio
Tato část ukazuje, jak vytvořit skupinu dostupnosti s typem clusteru Externí pomocí aplikace SSMS pomocí Průvodce vytvořením nové skupiny dostupnosti.
V nástroji SSMS rozbalte Always On vysokou dostupnost, klikněte pravým tlačítkem na Skupiny dostupnostia vyberte Průvodce vytvořením nové skupiny dostupnosti.
V dialogovém okně Úvod vyberte Další.
V dialogovém okně Zadat možnosti skupiny dostupnosti zadejte název skupiny dostupnosti a v rozevíracím seznamu vyberte typ clusteru
EXTERNAL
neboNONE
. Externí by se mělo použít při nasazení Pacemakeru. Žádná není určená pro specializované scénáře, jako je horizontální navýšení kapacity čtení. Výběr možnosti detekce stavu na úrovni databáze je volitelný. Další informace o této možnosti najdete v části možnost selhání detekce stavu databáze na úrovni skupiny dostupnosti. Vyberte Další.V dialogovém okně Vybrat databáze vyberte databáze, které se budou účastnit AG (skupiny dostupnosti). Pro přidání databáze do skupiny dostupnosti (AG) musí mít každá databáze úplnou zálohu. Vyberte Další.
V dialogovém okně Zadat repliky vyberte Přidat repliku.
V dialogovém okně Připojit k serveru zadejte název linuxové instance SQL Serveru, která bude sekundární replikou, a přihlašovací údaje pro připojení. Vyberte Připojit.
Opakujte předchozí dva kroky pro instanci, která bude obsahovat repliku jen pro konfiguraci nebo jinou sekundární repliku.
Všechny tři instance by teď měly být uvedené v dialogovém okně Zadat repliky. Pokud používáte typ clusteru Externí, pro sekundární repliku, která bude opravdová sekundární, ujistěte se, že režim dostupnosti odpovídá režimu dostupnosti primární repliky a režim převzetí služeb při selhání je nastaven na Externí. Pro repliku jen pro konfiguraci vyberte režim dostupnosti pouze konfigurace.
Následující příklad ukazuje AG se dvěma replikami, typem clusteru External a replikou určenou pouze pro konfiguraci.
Následující příklad ukazuje skupinu dostupnosti se dvěma replikami, typem clusteru None a replikou jen pro konfiguraci.
Pokud chcete změnit předvolby zálohování, vyberte kartu Předvolby zálohování. Další informace o předvolbách zálohování pomocí skupin dostupnosti AG najdete v tématu Konfigurace záloh na sekundárních replikách skupiny dostupnosti AlwaysOn.
Pokud používáte čitelné sekundární soubory nebo vytváříte skupinu dostupnosti s typem clusteru Žádné pro škálování čtení, můžete vytvořit naslouchací proces výběrem karty Naslouchací proces. Naslouchací proces můžete přidat i později. Pokud chcete vytvořit naslouchací proces, zvolte možnost Vytvoření naslouchacího procesu skupiny dostupnosti a zadejte název, port TCP/IP a jestli chcete použít statickou nebo automaticky přiřazenou IP adresu DHCP. Mějte na paměti, že pro skupinu dostupnosti s typem clusteru 'None' by IP měla být statická a nastavena na IP adresu primárního serveru.
Pokud je naslouchací proces vytvořen pro čitelné scénáře, SSMS 17.3 nebo novější umožňuje vytvořit směrování jen pro čtení v průvodci. Můžete ho také přidat později přes SSMS nebo Transact-SQL. Chcete-li nyní přidat směrování jen pro čtení:
Vyberte kartu Read-Only Směrování.
Zadejte adresy URL replik jen pro čtení. Tyto adresy URL se podobají koncovým bodům, ale používají port instance, nikoli koncový bod.
Vyberte každou adresu URL a dole vyberte čitelné repliky. Pro výběr více položek podržte klávesu SHIFT nebo táhněte myší.
Vyberte Další.
Zvolte způsob inicializace sekundárních replik. Ve výchozím nastavení se používá automatické osévání, což vyžaduje stejnou cestu na všech serverech, které se účastní skupiny dostupnosti. Průvodce také může provést zálohování, kopírování a obnovení (druhá možnost); připojte se, pokud jste databázi na replikách zálohovali, zkopírovali a obnovili ručně (třetí možnost); nebo přidejte databázi později (poslední možnost). Stejně jako u certifikátů, pokud ručně vytváříte zálohy a kopírujete je, musí být oprávnění k záložním souborům nastavená na ostatních replikách. Vyberte Další.
Pokud výsledek v dialogovém okně Ověření není úspěšný, zkontrolujte to. Některá upozornění jsou přijatelná a ne kritická, například pokud nevytvoříte posluchač. Vyberte Další.
V dialogovém okně Souhrn vyberte Dokončit. Proces pro vytvoření AG nyní začíná.
Po dokončení vytváření AG ve výsledcích vyberte Zavřít. Skupiny dostupnosti (AG) teď můžete zobrazit na replikách v zobrazeních dynamické správy a ve složce Vysoká dostupnost Always On v SSMS.
Použijte Transact-SQL
Tato část ukazuje příklady vytvoření skupiny dostupnosti pomocí jazyka Transact-SQL. Směrování naslouchacího procesu a jen pro čtení je možné nakonfigurovat po vytvoření skupiny dostupnosti. Samotnou skupinu dostupnosti je možné upravit pomocí ALTER AVAILABILITY GROUP
, ale změnu typu clusteru není možné provést v SQL Serveru 2017 (14.x). Pokud jste nechtěli vytvořit skupinu dostupnosti s typem externího clusteru, musíte ji odstranit a znovu vytvořit s typem clusteru Žádné. Další informace a další možnosti najdete na následujících odkazech:
- vytvoření skupiny dostupnosti (Transact-SQL)
- ALTER AVAILABILITY GROUP (Transact-SQL)
- Konfigurace směrování jen pro čtení pro skupinu dostupnosti AlwaysOn
- Konfigurace posluchače pro skupinu dostupnosti Always On
Příklad A: Dvě repliky s replikou určenou pouze pro konfiguraci (typ externího clusteru)
Tento příklad ukazuje, jak vytvořit skupinu dostupnosti se dvěma replikami, která používá repliku pouze pro konfiguraci.
Spusťte na uzlu, který bude primární replikou obsahující plnohodnotnou kopii databáze. V tomto příkladu se používá automatické generování počátečních hodnot.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE <DBName> REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N' TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, SEEDING_MODE = AUTOMATIC), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', AVAILABILITY_MODE = CONFIGURATION_ONLY); GO
V okně dotazu připojeném k druhé replice spusťte následující příkaz, který připojí repliku ke skupině dostupnosti a zahájí proces seedingu z primární do sekundární repliky.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
V okně dotazu připojeném k replice určené pouze pro konfiguraci ji připojte ke skupině dostupnosti.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO
Příklad B: Tři repliky se směrováním jen pro čtení (typ externího clusteru)
Tento příklad ukazuje tři úplné repliky a způsob konfigurace směrování jen pro čtení v rámci počátečního vytvoření skupiny dostupnosti.
Spusťte na uzlu, který bude primární replikou obsahující úplnou kopii databází pro čtení a zápis. V tomto příkladu se používá automatické setí.
CREATE AVAILABILITY GROUP [<AGName>] WITH (CLUSTER_TYPE = EXTERNAL) FOR DATABASE < DBName > REPLICA ON N'LinAGN1' WITH ( ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN2.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:1433') ), N'LinAGN2' WITH ( ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN3.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:1433') ), N'LinAGN3' WITH ( ENDPOINT_URL = N'TCP://LinAGN3.FullyQualified.Name:5022', FAILOVER_MODE = EXTERNAL, SEEDING_MODE = AUTOMATIC, AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = ( ( 'LinAGN1.FullyQualified.Name', 'LinAGN2.FullyQualified.Name' ) )), SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN3.FullyQualified.Name:1433') ) LISTENER '<ListenerName>' ( WITH IP = ('<IPAddress>', '<SubnetMask>'), Port = 1433 ); GO
Několik věcí, které byste si měli poznamenat o této konfiguraci:
-
AGName
je název skupiny dostupnosti. -
DBName
je název databáze, která se používá se skupinou dostupnosti. Může to být také seznam názvů oddělených čárkami. -
ListenerName
je název, který se liší od některého z podkladových serverů nebo uzlů. Bude zaregistrovaný v DNS spolu sIPAddress
. -
IPAddress
je IP adresa přidružená kListenerName
. Je také jedinečný a není stejný jako žádný ze serverů nebo uzlů. Aplikace a koncoví uživatelé používají k připojení k AGListenerName
neboIPAddress
. -
SubnetMask
je maska podsítěIPAddress
. V SQL Serveru 2019 (15.x) a předchozích verzích je to255.255.255.255
. V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích je to0.0.0.0
.
-
V dotazovém okně připojeném k druhé replice spusťte následující příkaz, který připojí repliku ke skupině dostupnosti (AG) a zahájí proces seedingu z primární do sekundární repliky.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Opakujte krok 2 pro třetí repliku.
Příklad C: Dvě repliky se směrováním jen pro čtení (typ clusteru None)
Tento příklad ukazuje vytvoření konfigurace dvou replik pomocí typu clusteru None. Používá se pro scénář škálování čtení, ve kterém se neočekává žádné převzetí služeb při selhání. Tím se vytvoří posluchač, který je ve skutečnosti primární replikou, a směrování pouze pro čtení pomocí funkce round robin.
- Spusťte na uzlu, který bude primární replikou obsahující plně čtení a zapisovatelnou kopii databáze. V tomto příkladu se používá automatické generování.
CREATE AVAILABILITY
GROUP [<AGName>]
WITH (CLUSTER_TYPE = NONE)
FOR DATABASE <DBName> REPLICA ON
N'LinAGN1' WITH (
ENDPOINT_URL = N'TCP://LinAGN1.FullyQualified.Name: <PortOfEndpoint>',
FAILOVER_MODE = MANUAL,
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
PRIMARY_ROLE(
ALLOW_CONNECTIONS = READ_WRITE,
READ_ONLY_ROUTING_LIST = (('LinAGN1.FullyQualified.Name'.'LinAGN2.FullyQualified.Name'))
),
SECONDARY_ROLE(
ALLOW_CONNECTIONS = ALL,
READ_ONLY_ROUTING_URL = N'TCP://LinAGN1.FullyQualified.Name:<PortOfInstance>'
)
),
N'LinAGN2' WITH (
ENDPOINT_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfEndpoint>',
FAILOVER_MODE = MANUAL,
SEEDING_MODE = AUTOMATIC,
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE, READ_ONLY_ROUTING_LIST = (
('LinAGN1.FullyQualified.Name',
'LinAGN2.FullyQualified.Name')
)),
SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL, READ_ONLY_ROUTING_URL = N'TCP://LinAGN2.FullyQualified.Name:<PortOfInstance>')
),
LISTENER '<ListenerName>' (WITH IP = (
'<PrimaryReplicaIPAddress>',
'<SubnetMask>'),
Port = <PortOfListener>
);
GO
Kde:
-
AGName
je název skupiny dostupnosti. -
DBName
je název databáze, která se bude používat se skupinou dostupnosti. Může to být také seznam názvů oddělených čárkami. -
PortOfEndpoint
je číslo portu používané vytvořeným koncovým bodem. -
PortOfInstance
je číslo portu používané instancí SQL Serveru. -
ListenerName
je název, který se liší od některé z podkladových replik, ale ve skutečnosti se nepoužívá. -
PrimaryReplicaIPAddress
je IP adresa primární repliky. -
SubnetMask
je maska podsítěIPAddress
. V SQL Serveru 2019 (15.x) a předchozích verzích je to255.255.255.255
. V SYSTÉMU SQL Server 2022 (16.x) a novějších verzích je to0.0.0.0
.
Připojit sekundární repliku ke skupině dostupnosti a zahájit automatické nasazení.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = NONE); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GO
Vytvoření přihlášení a oprávnění SQL Serveru pro Pacemaker
Cluster s vysokou dostupností Pacemakeru, který je základem SQL Serveru v Linuxu, potřebuje přístup k instanci SQL Serveru a oprávnění k samotné skupině dostupnosti. Tyto kroky vytvoří přihlášení a přidružená oprávnění spolu se souborem, který pacemakeru řekne, jak se přihlásit k SQL Serveru.
V okně dotazu připojeném k první replice spusťte následující skript:
CREATE LOGIN PMLogin WITH PASSWORD ='<password>'; GO GRANT VIEW SERVER STATE TO PMLogin; GO GRANT ALTER, CONTROL, VIEW DEFINITION ON AVAILABILITY GROUP::<AGThatWasCreated> TO PMLogin; GO
Na uzlu 1 zadejte příkaz.
sudo emacs /var/opt/mssql/secrets/passwd
Otevře se editor Emacs.
Do editoru zadejte následující dva řádky:
PMLogin <password>
Podržte stisknutou klávesu
Ctrl
a potom stiskněteX
a pakC
, ukončete a uložte soubor.Provést
sudo chmod 400 /var/opt/mssql/secrets/passwd
uzamknout soubor.
Opakujte kroky 1 až 5 na ostatních serverech, které budou sloužit jako repliky.
Vytvořte prostředky skupiny dostupnosti v clusteru Pacemaker (pouze externí)
Po vytvoření skupiny dostupnosti na SQL Serveru musí být odpovídající prostředky vytvořeny v Pacemakeru, pokud je zadán typ clusteru Externí. K "AG" jsou přidružené dva prostředky: samotné "AG" a IP adresa. Konfigurace prostředku IP adresy je volitelná, pokud nepoužíváte funkci posluchače, ale přesto se doporučuje.
Prostředek skupiny dostupnosti (AG), který jste vytvořili, je typ prostředku nazývaný klon. Prostředek AG má v podstatě kopie na každém uzlu, a je zde jeden řídicí prostředek nazývaný jako master . Hlavní server je přidružený k serveru, který je hostitelem primární repliky. Ostatní prostředky hostují sekundární repliky (běžné nebo pouze konfigurační) a mohou být povýšeny na hlavní uzel při selhání.
Poznámka
Komunikace bez předsudků
Tento článek obsahuje odkazy na termín otrok, který Microsoft považuje za urážlivý, pokud je použit v tomto kontextu. Termín se zobrazí v tomto článku, protože se aktuálně zobrazuje v softwaru. Když se termín odebere ze softwaru, odebereme ho z článku.
- Red Hat Enterprise Linux (RHEL) a Ubuntu
- SUSE Linux Enterprise Server (SLES)
Vytvořte prostředek AG s následující syntaxí:
sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s --master meta notify=true
Kde
NameForAGResource
je jedinečný název přidělený tomuto prostředku clusteru pro skupinu dostupnosti aAGName
je název skupiny dostupnosti, která byla vytvořena.V systémech RHEL 7.7 a Ubuntu 18.04 a novějších verzích se může zobrazit upozornění s použitím
--master
nebo s chybou, jako jesqlag_monitor_0 on ag1 'not configured' (6): call=6, status=complete, exitreason='Resource must be configured with notify=true'
. Pokud se chcete této situaci vyhnout, použijte:sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s master notify=true
Vytvořte prostředek IP adresy pro aplikační bránu, který bude připojen k naslouchací funkci.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>
Kde
NameForIPResource
je jedinečný název prostředku IP aIPAddress
je statická IP adresa přiřazená k prostředku.Pokud chcete zajistit, aby IP adresa a prostředek AG běžely na stejném uzlu, musí být nastaveno omezení kolokace.
sudo pcs constraint colocation add <NameForIPResource> <NameForAGResource>-master INFINITY with-rsc-role=Master
Kde
NameForIPResource
je název prostředku IP aNameForAGResource
je název prostředku AG.Vytvořte pořadí, které zajistí, že je prostředek AG v provozu před IP adresou. I když kolokační omezení znamená omezení řazení, toto jej vynucuje.
sudo pcs constraint order promote <NameForAGResource>-master then start <NameForIPResource>
Kde
NameForIPResource
je název prostředku IP aNameForAGResource
je název prostředku AG.
Další krok
V tomto kurzu jste zjistili, jak vytvořit a nakonfigurovat skupinu dostupnosti pro SQL Server v Linuxu. Naučili jste se:
- Povolte skupiny dostupnosti.
- Vytvořte koncové body a certifikáty AG.
- K vytvoření skupiny dostupnosti (AG) použijte SQL Server Management Studio (SSMS) nebo Transact-SQL.
- Vytvořte pro Pacemaker přihlašovací údaje a oprávnění k SQL Serveru.
- Vytvořte prostředky skupiny dostupnosti v clusteru Pacemaker.
Většinu úloh správy skupiny dostupnosti (AG), včetně aktualizací a procedur při selhání, můžete nalézt zde: