Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server na Linuxu
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í pro Windows můžete povolit skupinu dostupnosti buď s předem vytvořeným základním clusterem Pacemaker, nebo bez něj. Integrace s clusterem v případě potřeby proběhne 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)
Předpoklady
Nasadit cluster vysoké dostupnosti Pacemaker. Pro více informací viz Deploy a Pacemaker cluster for SQL Server on Linux.
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 můžete funkci skupin dostupnosti povolit dvěma způsoby: použít mssql-conf nástroj nebo soubor upravit mssql.conf ručně.
Important
Musíte povolit funkci AG pro repliky pouze pro konfiguraci, a to i na SQL Serveru Express.
Použijte mssql-conf utility
Na příkazovém řádku spusťte následující příkaz:
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
Úprava souboru mssql.conf
Můžete také upravit mssql.conf soubor umístěný ve /var/opt/mssql složce. Přidejte následující řádky:
[hadr]
hadr.hadrenabled = 1
Restartování SQL Serveru
Po povolení skupin dostupnosti je nutné restartovat SQL Server. Použijte následující příkaz:
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. Pod Linuxem SQL Server podporuje koncové body AG jenom v případě, že používáte certifikáty pro ověřování. Certifikát musíte obnovit z jedné instance ve všech ostatních instancích, které se účastní jako repliky v rámci stejné skupiny dostupnosti. Certifikát potřebujete i pro repliku pouze pro konfiguraci.
Koncové body a obnovu certifikátů lze vytvářet pouze pomocí Transact-SQL. Můžete také použít negenerované certifikáty SQL Serveru. Potřebujete také proces správy a nahrazení všech certifikátů, jejichž platnost vyprší.
Important
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 tady:
Note
I když vytváříte skupinu dostupnosti, typ endpointu používá FOR DATABASE_MIRRORING, protože tento typ sdílí základní aspekty s touto nyní zastaralou funkcí.
Tento příklad vytvoří certifikáty pro konfiguraci se třemi uzly. Názvy instancí jsou LinAGN1, LinAGN2a LinAGN3.
Spuštěním následujícího skriptu na
LinAGN1vytvořte hlavní klíč, certifikát a koncový bod a zálohujte certifikát. V tomto příkladu koncový bod používá typický TCP port 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 ); GOTotéž 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 ); GONakonec 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 ); GOPoužijte
scpnebo použijte jiný nástroj k zkopírování záloh certifikátu na každý uzel, který chcete mít součástí AG.V tomto příkladu:
- Zkopírujte
LinAGN1_Cert.cerdoLinAGN2aLinAGN3. - Zkopírujte
LinAGN2_Cert.cerdoLinAGN1aLinAGN3. - Zkopírujte
LinAGN3_Cert.cerdoLinAGN1aLinAGN2.
- 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
LinAGN2aLinAGN3naLinAGN1.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; GOCaution
Vaše heslo by mělo splňovat výchozí zásady hesla pro SQL Server. 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_CertaLinAGN3_CertnaLinAGN1. Certifikáty ostatních replik jsou nezbytné pro komunikaci a bezpečnost AG.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'; GOUdělte přihlašovacím údajům přidruženým k
LinAGN2aLinAGN3oprávnění pro připojení ke koncovému bodu vLinAGN1.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login;Vytvořte přihlášení na úrovni instance a uživatele přidružené k
LinAGN1aLinAGN3naLinAGN2.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; GOObnovit
LinAGN1_CertaLinAGN3_CertnaLinAGN2.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'; GOUdělte přihlašovacím údajům přidruženým k
LinAGN1aLinAGN3oprávnění pro připojení ke koncovému bodu vLinAGN2.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN3_Login; GOVytvořte přihlášení na úrovni instance a uživatele přidružené k
LinAGN1aLinAGN2naLinAGN3.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; GOObnovit
LinAGN1_CertaLinAGN2_CertnaLinAGN3.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'; GOUdělte přihlašovacím údajům přidruženým k
LinAGN1aLinAGN2oprávnění pro připojení ke koncovému bodu vLinAGN3.GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN1_Login; GRANT CONNECT ON ENDPOINT::AGEP TO LinAGN2_Login; GO
Vytvoření skupiny dostupnosti
Tato část ukazuje, jak pomocí aplikace SQL Server Management Studio (SSMS) nebo Transact-SQL vytvořit skupinu dostupnosti pro SQL Server.
Použití aplikace SQL Server Management Studio
Tato sekce ukazuje, jak vytvořit AG s clusterovým typem externího pomocí SSMS s Průvodcem New Availability Group.
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 dialogu Úvod vyberte Další.
V dialogovém okně Zadat možnosti skupiny dostupnosti zadejte název skupiny dostupnosti a vyberte typ
EXTERNALclusteru neboNONEv rozevíracím seznamu. Používá seEXTERNALpři nasazování Pacemakeru. PoužijteNONEpro specializované scénáře, jako je škálování čtení externě. Výběr možnosti detekce stavu na úrovni databáze je volitelný. Další informace o této možnosti najdete v tématu Možnost detekce selhání na úrovni zdraví databáze skupiny dostupnosti. Vyberte Další.V dialogu Výběr databází vyberte databáze, do kterých se chcete účastnit AG. Než můžete přidat každou databázi do AG (skupiny dostupnosti), musí mít úplnou zálohu. Vyberte Další.
V dialogu Specifikovat repliky vyberte Přidat repliku.
V dialogu Připojit se k serveru zadejte název linuxové instance SQL Server pro sekundární repliku 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 se objevují v dialogu Specifikovat repliky . Pokud použijete clusterový typ external, pro sekundární repliku, která je skutečnou sekundární, ujistěte se, že režim dostupnosti odpovídá režimu primární repliky a nastavte failover režim 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 nastavení zálohy, vyberte záložku Nastavení zálohy . Pro více informací o preferencích zálohování u AG viz Konfigurovat zálohy na sekundárních replikách skupiny Always On availability.
Pokud používáte čitelné sekundární repliky nebo vytvoříte AG s typem clusteru 'Žádný' pro škálování čtení, můžete vytvořit posluchač výběrem karty Posluchač. Můžete také přidat posluchač později. Pro vytvoření posluchače vyberte možnost Vytvořit skupinu dostupnosti a zadejte jméno, TCP/IP port a zda použít statickou nebo automaticky přiřazenou DHCP IP adresu. Pro AG s clusterovým typem None použijte statickou IP adresu, která odpovídá IP adrese primární adresy.
Pokud vytvoříte posluchače pro čitelné scénáře, SSMS umožňuje vytvoření směrování pouze pro čtení ve wizardu. Můžete ji také přidat později pomocí SSMS nebo Transact-SQL. Chcete-li nyní přidat směrování jen pro čtení:
Vyberte záložku 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. Chcete-li vybrat více položek, podržte klávesu Shift nebo tažením myší vyberte.
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 ručně zálohovali, zkopírovali a obnovili (třetí možnost); nebo přidejte databázi později (poslední možnost). Stejně jako u certifikátů platí, že pokud ručně vytváříte zálohy a kopírujete je, nastavte oprávnění k záložním souborům na ostatních replikách. Vyberte Další.
V okně Validace , pokud průvodce nevrátí Úspěch u všech kontrol, prověřte to dál. Některá upozornění jsou přijatelná a ne kritická, například pokud nevytvoříte posluchač. Vyberte Další.
V dialogu Souhrn vyberte Dokončit. Proces pro vytvoření AG nyní začíná.
Po dokončení tvorby AG vyberte Zavřít na stránce Výsledky . 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 sekce ukazuje příklady vytváření AG pomocí Transact-SQL. Po vytvoření skupiny dostupnosti můžete nakonfigurovat naslouchací rozhraní a směrování pouze pro čtení. Skupinu dostupnosti můžete změnit pomocí ALTER AVAILABILITY GROUP, ale nemůžete změnit typ clusteru 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é.
Pro více informací a další možnosti viz:
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- 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.
Provést následující příkaz na primárním replikním uzlu, který obsahuje kopii databází pro čtení/zápis. 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 ); GOV dotazovacím okně připojeném k druhé replice proveďte následující příkaz pro připojení repliky k AG a začněte seedovat z primární na sekundární repliku.
ALTER AVAILABILITY GROUP [<AGName>] JOIN WITH (CLUSTER_TYPE = EXTERNAL); GO ALTER AVAILABILITY GROUP [<AGName>] GRANT CREATE ANY DATABASE; GOV dotazovacím okně připojeném k replikě pouze pro konfiguraci spusťte následující příkaz pro připojení k AG.
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, jak nastavit směrování pouze pro čtení jako součást počátečního vytváření AG pro tři plné repliky.
Na uzlu, který funguje jako primární replika a který obsahuje plně čtenou/zapisovanou kopii databází, spusťte následující příkaz. 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, 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 ); GONěkolik věcí, které byste si měli poznamenat o této konfiguraci:
-
AGNameje název AG. -
DBNameje název databáze, kterou používáte s Dostupnostní skupinou. Může to být také seznam jmen oddělený čárkami. -
ListenerNameje název, který se liší od kteréhokoli ze základních serverů nebo uzlů. Zaregistrujete ho v DNS spolu sIPAddress. -
IPAddressje IP adresa proListenerName. Je také unikátní a neodpovídá žádnému ze serverů ani uzlů. Aplikace a koncoví uživatelé používají k připojení k AGListenerNameneboIPAddress.-
SubnetMaskje maska podsítěIPAddress. V SQL Serveru 2019 (15.x) a předchozích verzích je255.255.255.255tato hodnota . V systému SQL Server 2022 (16.x) a novějších verzích je tato hodnota0.0.0.0.
-
-
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 počátečního nasazení 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; GOOpakujte 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 vytváří konfiguraci se dvěma replikami, která používá typ shluku None. Použijte tuto konfiguraci pro scénář škálování čtení, kdy nečekáte failover. Tento krok vytváří posluchače, který je primární replikou, a konfiguruje směrování pouze pro čtení s funkcí round-robin.
Na uzlu, který funguje jako primární replika a který obsahuje plně čtenou/zapisovanou kopii databází, spusťte následující příkaz. V tomto příkladu se používá automatické generování počátečních hodnot.
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> ); GOV tomto příkladu:
-
AGNameje název AG. -
DBNameje název databáze, kterou používáte s Dostupnostní skupinou. Může to být také seznam jmen oddělený čárkami. -
PortOfEndpointje číslo portu pro koncový bod, který vytvoříte.-
PortOfInstanceje číslo portu pro instanci SQL Server.
-
-
ListenerNameje dočasný název, který se liší od všech základních replik. -
PrimaryReplicaIPAddressje IP adresa primární repliky.-
SubnetMaskje maska podsítěIPAddress. V SQL Serveru 2019 (15.x) a předchozích verzích je255.255.255.255tato hodnota . V systému SQL Server 2022 (16.x) a novějších verzích je tato hodnota0.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í Pacemaker, který používá SQL Server v Linuxu, potřebuje přístup k instanci SQL Serveru a oprávnění k samotné skupině dostupnosti. Tyto kroky vytvoří přihlašovací jméno a přidružená oprávnění spolu se souborem, který pacemakeru řekne, jak se má ověřit na 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; GONa Node 1 přidejte do souboru následující dva řádky
/var/opt/mssql/secrets/passwd:PMLogin <password>Možná budete muset zvýšit svá oprávnění k
sudoúpravě tohoto souboru.Uzamkněte soubor:
sudo chmod 400 /var/opt/mssql/secrets/passwdOpakujte kroky 1 až 5 na ostatních serverech, které slouží jako repliky.
Vytvořte prostředky skupiny dostupnosti v clusteru Pacemaker (pouze externí)
Po vytvoření skupiny dostupnosti v SQL Serveru je nutné definovat odpovídající prostředky v Pacemakeru při specifikaci typu clusteru "External". Prostředky pro AG (skupinu dostupnosti) jsou dvě: prostředek AG a prostředek IP adresy. Konfigurace prostředku IP adresy je volitelná, pokud nepoužíváte posluchač. Doporučuje se však, když potřebujete funkce posluchače.
Prostředek skupiny dostupnosti, který vytvoříte, je typ prostředku označovaného jako klon. AG zdroj má kopie na každém uzlu a jeden řídící zdroj nazývaný povýšený zdroj. Propagovaný zdroj odpovídá serveru, který hostuje primární repliku. Ostatní zdroje hostí sekundární repliky (běžné nebo pouze konfigurační) a mohou být propagovány při failoveru.
Note
V SYSTÉMU SQL Server 2025 (17.x) s kumulativní aktualizací (CU) 3 a novějšími verzemi je agent PACEmaker HA v2 (Preview) dostupný pro Red Hat Enterprise Linux (RHEL) a Ubuntu prostřednictvím mssql-server-ha balíčku. Pacemaker HA agent v2 můžete vyhodnotit i v neprodukčních nasazeních. Stávající agent Pacemaker HA (v1) je stále plně podporován pro produkční nasazení. Další informace naleznete v tématu Pacemaker HA agent v2 (Preview).
- Red Hat Enterprise Linux (RHEL) a Ubuntu
- SUSE Linux Enterprise Server (SLES)
Agent Pacemaker HA v1
Vytvořte prostředek skupiny dostupnosti (AG) v Pacemakeru pomocí agenta Pacemaker HA (v1): (
ocf:mssql:ag)sudo pcs resource create <NameForAGResource> ocf:mssql:ag ag_name=<AGName> meta failure-timeout=30s promotable notify=trueV tomto příkladu je jedinečný název,
NameForAGResourcekterý dáte tomuto prostředku clusteru pro skupinu dostupnosti, aAGNameje název skupiny dostupnosti, kterou jste vytvořili.Vytvořte prostředek IP adresy pro aplikační bránu, kterou připojíte k funkčnosti posluchače.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>V tomto příkladu je
NameForIPResourcejedinečný název pro prostředek IP aIPAddressje statická IP adresa, kterou přiřadíte k prostředku.Pokud chcete zajistit, aby IP adresa a zdroj AG běžely na stejném uzlu, nakonfigurujte omezení kolokace.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYV tomto příkladu
NameForIPResourceje název prostředku IP adresy aNameForAGResourceje to název prostředku skupiny dostupnosti.Vytvořte omezení pořadí, aby se zajistilo, že AG zdroj běží před IP adresou. I když omezení kolokace znamená omezení řazení, tento krok ho vynucuje.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>V tomto příkladu
NameForIPResourceje název prostředku IP adresy aNameForAGResourceje to název prostředku skupiny dostupnosti.
Agent pacemaker HA v2 (Preview)
Pacemaker HA agent v2 používá architekturu založenou na službách. Agent běží jako dedikovaná systémová služba s názvem mssql-pcsag, která je zodpovědná za zpracování specifických operací s vysokou dostupností a komunikaci s Pacemakerem specifickými pro SQL Server.
Službu spravujete mssql-pcsag pomocí standardních systémových systémových kontrol. Spustit, zastavit, restartovat a podle potřeby kontrolovat stav této služby pomocí následujících příkazů:
sudo systemctl start mssql-pcsag # Start the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl stop mssql-pcsag # Stop the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl restart mssql-pcsag # Restart the Pacemaker HA agent v2 (mssql-pcsag) service
sudo systemctl status mssql-pcsag # Check the status of the Pacemaker HA agent v2 (mssql-pcsag) service
Pacemaker komunikuje se skupinami dostupnosti SQL Serveru prostřednictvím mssql-pcsag služby. Aby monitorování dostupnostní skupiny a převzetí služeb při selhání správně fungovalo:
- Pacemaker cluster musí být spuštěný.
- Služba
mssql-pcsagmusí být spuštěná.
Ačkoliv jsou Pacemaker a mssql-pcsag samostatné komponenty, pracují společně za běhu. Pokud se zastaví kardiostimulátor nebo mssql-pcsag služba, operace failover skupiny dostupnosti nefungují podle očekávání.
Note
Restartování mssql-pcsag služby nerestartuje SQL Server. Podobně restartování SQL Serveru automaticky nerestartuje agenta PACEmaker HA. Ověřte, že během řešení potíží běží obě služby.
Agent pacemaker HA v2 přináší vylepšení spolehlivosti a výkonu oproti předchozímu agentovi, mezi které patří:
Vylepšili jsme výkon převzetí služeb při selhání, abyste snížili plánovanou i neplánovanou dobu převzetí služeb při selhání.
Podpora flexibilních zásad automatického převzetí služeb při selhání, včetně konfigurace úrovně podmínek selhání a časového limitu pro kontrolu zdraví.
Příklad: Následující příkaz Transact-SQL změní úroveň stavu selhání existující skupiny dostupnosti s názvem AG1 na úroveň 2:
ALTER AVAILABILITY GROUP AG1 SET (FAILURE_CONDITION_LEVEL = 2);Příklad: Následující příkaz Transact-SQL změní prahovou hodnotu časového limitu kontroly stavu existující skupiny dostupnosti s názvem AG1 na 60 000 milisekund (60 sekund).
ALTER AVAILABILITY GROUP AG1 SET (HEALTH_CHECK_TIMEOUT = 60000);Příklad: Po použití konfigurace použijte následující příkaz Transact-SQL k ověření nakonfigurované úrovně stavu a časového limitu kontroly stavu pro skupiny dostupnosti.
SELECT failure_condition_level, health_check_timeout FROM sys.availability_groups;Podpora protokolu TLS 1.3 pro komunikaci mezi clusterem Pacemaker a SQL Serverem
Vytvořte prostředek AG v Pacemakeru pomocí agenta HA v2: (
ocf:mssql:agv2)sudo pcs resource create <NameForAGResource> ocf:mssql:agv2 ag_name=<AGName> meta failure-timeout=30s promotable notify=truePokud upgradujete z Pacemaker HA agent v1 na v2, před vytvořením prostředku
agv2odeberte existující prostředek AG:sudo pcs resource delete <NameForAGResource>Tato operace dočasně zastaví synchronizaci AG při opětovném vytvoření prostředku. Odstraněním a opětovným vytvořením prostředku AG Pacemaker nedojde k odstranění skupiny AG. Po opětovném vytvoření prostředku Pacemaker automaticky obnoví správu a synchronizaci AG (skupiny dostupnosti).
Vytvořte prostředek IP adresy pro aplikační bránu, kterou připojíte k funkčnosti posluchače.
sudo pcs resource create <NameForIPResource> ocf:heartbeat:IPaddr2 ip=<IPAddress> cidr_netmask=<Netmask>V tomto příkladu je
NameForIPResourcejedinečný název pro prostředek IP aIPAddressje statická IP adresa, kterou přiřadíte k prostředku.Pokud chcete zajistit, aby IP adresa a zdroj AG běžely na stejném uzlu, nakonfigurujte omezení kolokace.
sudo pcs constraint colocation add <NameForIPResource> with promoted <NameForAGResource>-clone INFINITYV tomto příkladu
NameForIPResourceje název prostředku IP adresy aNameForAGResourceje to název prostředku skupiny dostupnosti.Vytvořte pořadové omezení, které zajistí, že je AG resource funkční před nastavením IP adresy. I když omezení kolokace znamená omezení řazení, tento krok ho vynucuje.
sudo pcs constraint order promote <NameForAGResource>-clone then start <NameForIPResource>V tomto příkladu
NameForIPResourceje název prostředku IP adresy aNameForAGResourceje to název prostředku skupiny dostupnosti.