Vysoká dostupnost se službou SQL Managed Instance povolenou službou Azure Arc
Spravovaná instance SQL povolená službou Azure Arc je nasazená v Kubernetes jako kontejnerizovaná aplikace. K zajištění integrovaného úložiště používá konstrukty Kubernetes, jako jsou stavové sady a trvalé úložiště:
- Monitorování stavu
- Detekce poruch
- Automatické převzetí služeb při selhání za účelem zachování stavu služby
Kvůli vyšší spolehlivosti můžete také nakonfigurovat službu SQL Managed Instance povolenou službou Azure Arc tak, aby se nasadila s dalšími replikami v konfiguraci s vysokou dostupností. Kontroler dat datových služeb Arc spravuje:
- Sledování
- Detekce poruch
- Automatické převzetí služeb při selhání
Datová služba s podporou arc poskytuje tuto službu bez zásahu uživatele. Služba:
- Nastaví skupinu dostupnosti.
- Konfigurace koncových bodů zrcadlení databáze
- Přidá databáze do skupiny dostupnosti.
- Koordinuje převzetí služeb při selhání a upgrade.
Tento dokument zkoumá oba typy vysoké dostupnosti.
Spravovaná instance SQL povolená službou Azure Arc poskytuje různé úrovně vysoké dostupnosti v závislosti na tom, jestli byla spravovaná instance SQL nasazená jako úroveň služby pro obecné účely nebo Pro důležité obchodní informace úroveň služby.
Vysoká dostupnost na úrovni služby Pro obecné účely
Na úrovni služby Pro obecné účely je k dispozici pouze jedna replika a vysoká dostupnost se dosahuje prostřednictvím orchestrace Kubernetes. Pokud například dojde k chybě podu nebo uzlu obsahujícího image kontejneru spravované instance, Kubernetes se pokusí vystát jiný pod nebo uzel a připojit se ke stejnému trvalému úložišti. Během této doby není spravovaná instance SQL pro aplikace dostupná. Aplikace se musí znovu připojit a opakovat transakci, když je nový pod spuštěný. Pokud load balancer
se používá typ služby, můžou se aplikace znovu připojit ke stejnému primárnímu koncovému bodu a Kubernetes přesměruje připojení na novou primární. Pokud je nodeport
typ služby, aplikace se budou muset znovu připojit k nové IP adrese.
Ověření integrované vysoké dostupnosti
Pokud chcete ověřit vysokou dostupnost sestavení poskytovanou Kubernetes, můžete:
- Odstranění podu existující spravované instance
- Ověřte, že se Kubernetes z této akce obnoví.
Během obnovení kubernetes spustí další pod a připojí trvalé úložiště.
Požadavky
- Cluster Kubernetes vyžaduje sdílené vzdálené úložiště.
- Spravovaná instance SQL povolená službou Azure Arc nasazenou s jednou replikou (výchozí)
Prohlédněte si pody.
kubectl get pods -n <namespace of data controller>
Odstraňte pod spravované instance.
kubectl delete pod <name of managed instance>-0 -n <namespace of data controller>
Například
user@pc:/# kubectl delete pod sql1-0 -n arc pod "sql1-0" deleted
Prohlédněte si pody a ověřte, že se spravovaná instance obnovuje.
kubectl get pods -n <namespace of data controller>
Příklad:
user@pc:/# kubectl get pods -n arc NAME READY STATUS RESTARTS AGE sql1-0 2/3 Running 0 22s
Po obnovení všech kontejnerů v podu se můžete připojit ke spravované instanci.
Vysoká dostupnost ve vrstvě služby Pro důležité obchodní informace
Kromě toho, co nativně poskytuje orchestrace Kubernetes, poskytuje spravovaná instance SQL pro Azure Arc na úrovni služby Pro důležité obchodní informace kromě toho, co nativně poskytuje skupina dostupnosti. Skupina dostupnosti obsažená je založená na technologii SQL Server AlwaysOn. Poskytuje vyšší úroveň dostupnosti. Spravovanou instanci SQL povolenou službou Azure Arc nasazenou s Pro důležité obchodní informace vrstvou služby je možné nasadit s 2 nebo 3 replikami. Tyto repliky se vždy synchronizují s ostatními.
U skupin dostupnosti s obsahem jsou všechny chyby podu nebo selhání uzlů pro aplikaci transparentní. Skupina dostupnosti obsahuje alespoň jeden další pod, který obsahuje všechna data z primárního serveru a je připravená na připojení.
Skupiny dostupnosti s obsahem
Skupina dostupnosti sváže jednu nebo více uživatelských databází do logické skupiny, aby v případě převzetí služeb při selhání převzala při selhání celou skupinu databází sekundární repliku jako jednu jednotku. Skupina dostupnosti replikuje data pouze v uživatelských databázích, ale ne v systémových databázích, jako jsou přihlášení, oprávnění nebo úlohy agenta. Skupina dostupnosti obsahuje metadata ze systémových databází, jako msdb
jsou databáze a master
databáze. Když se v primární replice vytvoří nebo upraví přihlášení, automaticky se vytvoří také v sekundárních replikách. Podobně při vytvoření nebo úpravě úlohy agenta v primární replice obdrží tyto změny také sekundární repliky.
Služba SQL Managed Instance povolená službou Azure Arc využívá tento koncept skupiny dostupnosti a přidává operátora Kubernetes, aby je bylo možné nasadit a spravovat ve velkém měřítku.
Možnosti, které obsahují skupiny dostupnosti, umožňují:
Při nasazení s více replikami se vytvoří jedna skupina dostupnosti se stejným názvem jako spravovaná instance SQL s podporou Arc. Ve výchozím nastavení má skupina dostupnosti tři repliky, včetně primární. Všechny operace CRUD pro skupinu dostupnosti se spravují interně, včetně vytvoření skupiny dostupnosti nebo připojení replik k vytvořené skupině dostupnosti. V instanci nemůžete vytvářet další skupiny dostupnosti.
Všechny databáze se automaticky přidají do skupiny dostupnosti, včetně všech uživatelských a systémových databází, jako
master
amsdb
. Tato funkce poskytuje jednosystémové zobrazení napříč replikami skupiny dostupnosti. Pokud se připojujete přímo k instanci,containedag_msdb
všimněte si oboucontainedag_master
databází. Databázecontainedag_*
představujímaster
skupinu dostupnosti amsdb
uvnitř skupiny dostupnosti.Externí koncový bod se automaticky zřizuje pro připojení k databázím v rámci skupiny dostupnosti. Tento koncový bod
<managed_instance_name>-external-svc
hraje roli naslouchacího procesu skupiny dostupnosti.
Nasazení služby SQL Managed Instance povolené službou Azure Arc s více replikami pomocí webu Azure Portal
Na webu Azure Portal na stránce Vytvořit spravovanou instanci SQL povolenou službou Azure Arc:
- V části Výpočty a úložiště vyberte Konfigurovat výpočetní prostředky a úložiště . Portál zobrazuje upřesňující nastavení.
- V části Úroveň služby vyberte Pro důležité obchodní informace.
- Zaškrtněte políčko "Pouze pro použití při vývoji", pokud používáte pro účely vývoje.
- V části Vysoká dostupnost vyberte buď 2 repliky , nebo 3 repliky.
Nasazení s několika replikami pomocí Azure CLI
Když je spravovaná instance SQL povolená službou Azure Arc nasazená v Pro důležité obchodní informace úrovni služby, nasazení vytvoří více replik. Nastavení a konfigurace skupin dostupnosti obsažených mezi těmito instancemi se během zřizování provádí automaticky.
Například následující příkaz vytvoří spravovanou instanci se 3 replikami.
Nepřímo připojený režim:
az sql mi-arc create -n <instanceName> --k8s-namespace <namespace> --use-k8s --tier <tier> --replicas <number of replicas>
Příklad:
az sql mi-arc create -n sqldemo --k8s-namespace my-namespace --use-k8s --tier BusinessCritical --replicas 3
Přímo připojený režim:
az sql mi-arc create --name <name> --resource-group <group> --location <Azure location> –subscription <subscription> --custom-location <custom-location> --tier <tier> --replicas <number of replicas>
Příklad:
az sql mi-arc create --name sqldemo --resource-group rg --location uswest2 –subscription xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --custom-location private-location --tier BusinessCritical --replcias 3
Ve výchozím nastavení jsou všechny repliky nakonfigurované v synchronním režimu. To znamená, že všechny aktualizace primární instance se synchronně replikují do každé sekundární instance.
Zobrazení a monitorování stavu vysoké dostupnosti
Po dokončení nasazení se z aplikace SQL Server Management Studio připojte k primárnímu koncovému bodu.
Ověřte a načtěte koncový bod primární repliky a připojte se k němu ze sady SQL Server Management Studio.
Pokud se například instance SQL nasadila pomocí service-type=loadbalancer
následujícího příkazu, načtěte koncový bod, ke kterému se chcete připojit:
az sql mi-arc list --k8s-namespace my-namespace --use-k8s
nebo
kubectl get sqlmi -A
Získání primárního a sekundárního koncového bodu a stavu skupiny dostupnosti
kubectl describe sqlmi
Pomocí příkazů az sql mi-arc show
můžete zobrazit primární a sekundární koncové body a stav vysoké dostupnosti.
Příklad:
kubectl describe sqlmi sqldemo -n my-namespace
nebo
az sql mi-arc show --name sqldemo --k8s-namespace my-namespace --use-k8s
Příklad výstupu:
"status": {
"endpoints": {
"logSearchDashboard": "https://10.120.230.404:5601/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:sqldemo'))",
"metricsDashboard": "https://10.120.230.46:3000/d/40q72HnGk/sql-managed-instance-metrics?var-hostname=sqldemo-0",
"mirroring": "10.15.100.150:5022",
"primary": "10.15.100.150,1433",
"secondary": "10.15.100.156,1433"
},
"highAvailability": {
"healthState": "OK",
"mirroringCertificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
},
"observedGeneration": 1,
"readyReplicas": "2/2",
"state": "Ready"
}
Pomocí aplikace SQL Server Management Studio se můžete připojit k primárnímu koncovému bodu a ověřit zobrazení dynamické správy jako:
SELECT * FROM sys.dm_hadr_availability_replica_states
A řídicí panel dostupnosti s obsahem:
Scénáře převzetí služeb při selhání
Na rozdíl od skupin dostupnosti AlwaysOn sql Serveru je skupina dostupnosti obsažená jako spravované řešení s vysokou dostupností. Režimy převzetí služeb při selhání jsou proto omezené v porovnání s typickými režimy dostupnými u skupin dostupnosti AlwaysOn SQL Serveru.
Nasaďte spravované instance SQL úrovně služby Pro důležité obchodní informace v konfiguraci dvou replik nebo ve třech konfiguracích replik. Účinky selhání a následná obnovitelnost se u každé konfigurace liší. Tři instance repliky poskytují vyšší úroveň dostupnosti a obnovení než dvě instance repliky.
V konfiguraci dvou replik, pokud jsou SYNCHRONIZED
oba stavy uzlů , pokud primární replika přestane být k dispozici, sekundární replika se automaticky zvýší na primární. Jakmile bude replika, která selhala, bude aktualizována o všechny čekající změny. Pokud mezi replikami dojde k problémům s připojením, nemusí primární replika potvrdit žádné transakce, protože každá transakce musí být potvrzena na obou replikách, než se vrátí úspěch na primárním serveru.
V konfiguraci tří replik musí transakce potvrdit alespoň ve 2 ze 3 replik před vrácením zprávy o úspěchu zpět do aplikace. V případě selhání se jeden z sekundářů automaticky zvýší na primární, zatímco Kubernetes se pokusí obnovit neúspěšnou repliku. Jakmile bude replika dostupná, automaticky se připojí zpět k obsažené skupině dostupnosti a čekající změny se synchronizují. Pokud dochází k problémům s připojením mezi replikami a více než 2 repliky nejsou synchronizované, primární replika nebude provádět žádné transakce.
Poznámka:
Doporučuje se nasadit Pro důležité obchodní informace SQL Managed Instance v konfiguraci tří replik než dvě konfigurace repliky, aby se dosáhlo téměř nulové ztráty dat.
Pokud chcete převzít služby při selhání z primární repliky na jeden z sekundárních objektů, spusťte pro plánovanou událost následující příkaz:
Pokud se připojujete k primárnímu serveru, můžete pomocí následujícího jazyka T-SQL převzít služby při selhání instance SQL na jeden z sekundárních souborů:
ALTER AVAILABILITY GROUP current SET (ROLE = SECONDARY);
Pokud se připojíte k sekundární, můžete pomocí následujícího příkazu T-SQL zvýšit úroveň požadované sekundární na primární repliku.
ALTER AVAILABILITY GROUP current SET (ROLE = PRIMARY);
Upřednostňovaná primární replika
Konkrétní repliku můžete také nastavit jako primární repliku pomocí AZ CLI následujícím způsobem:
az sql mi-arc update --name <sqlinstance name> --k8s-namespace <namespace> --use-k8s --preferred-primary-replica <replica>
Příklad:
az sql mi-arc update --name sqldemo --k8s-namespace my-namespace --use-k8s --preferred-primary-replica sqldemo-3
Poznámka:
Kubernetes se pokusí nastavit upřednostňovanou repliku, ale není zaručeno.
Obnovení databáze do instance s více replikou
Další kroky jsou potřeba k obnovení databáze do skupiny dostupnosti. Následující kroky ukazují, jak obnovit databázi do spravované instance a přidat ji do skupiny dostupnosti.
Zveřejnění externího koncového bodu primární instance vytvořením nové služby Kubernetes
Určete pod, který je hostitelem primární repliky. Připojte se ke spravované instanci a spusťte:
SELECT @@SERVERNAME
Dotaz vrátí pod, který je hostitelem primární repliky.
Službu Kubernetes vytvořte do primární instance spuštěním následujícího příkazu, pokud váš cluster Kubernetes používá
NodePort
služby. Nahraďte<podName>
názvem serveru vráceným v předchozím kroku<serviceName>
upřednostňovaným názvem pro vytvořenou službu Kubernetes.kubectl -n <namespaceName> expose pod <podName> --port=1533 --name=<serviceName> --type=NodePort
Pro službu LoadBalancer spusťte stejný příkaz s tím rozdílem, že typ vytvořené služby je
LoadBalancer
. Příklad:kubectl -n <namespaceName> expose pod <podName> --port=1533 --name=<serviceName> --type=LoadBalancer
Tady je příklad spuštění tohoto příkazu ve službě Azure Kubernetes Service, kde pod, který je
sql2-0
hostitelem primární služby:kubectl -n arc-cluster expose pod sql2-0 --port=1533 --name=sql2-0-p --type=LoadBalancer
Získejte IP adresu vytvořené služby Kubernetes:
kubectl get services -n <namespaceName>
Obnovte databázi do koncového bodu primární instance.
Přidejte záložní soubor databáze do kontejneru primární instance.
kubectl cp <source file location> <pod name>:var/opt/mssql/data/<file name> -c <serviceName> -n <namespaceName>
Příklad
kubectl cp /home/WideWorldImporters-Full.bak sql2-1:var/opt/mssql/data/WideWorldImporters-Full.bak -c arc-sqlmi -n arc
Obnovte záložní soubor databáze spuštěním následujícího příkazu.
RESTORE DATABASE test FROM DISK = '/var/opt/mssql/data/<file name>.bak' WITH MOVE '<database name>' to '/var/opt/mssql/data/<file name>.mdf' ,MOVE '<database name>' to '/var/opt/mssql/data/<file name>_log.ldf' ,RECOVERY, REPLACE, STATS = 5; GO
Příklad
RESTORE Database WideWorldImporters FROM DISK = '/var/opt/mssql/data/WideWorldImporters-Full.BAK' WITH MOVE 'WWI_Primary' TO '/var/opt/mssql/data/WideWorldImporters.mdf', MOVE 'WWI_UserData' TO '/var/opt/mssql/data/WideWorldImporters_UserData.ndf', MOVE 'WWI_Log' TO '/var/opt/mssql/data/WideWorldImporters.ldf', MOVE 'WWI_InMemory_Data_1' TO '/var/opt/mssql/data/WideWorldImporters_InMemory_Data_1', RECOVERY, REPLACE, STATS = 5; GO
Přidejte databázi do skupiny dostupnosti.
Aby se databáze přidala do skupiny dostupnosti, musí běžet v režimu úplného obnovení a musí být provedena záloha protokolu. Spuštěním níže uvedených příkazů TSQL přidejte obnovenou databázi do skupiny dostupnosti.
ALTER DATABASE <databaseName> SET RECOVERY FULL; BACKUP DATABASE <databaseName> TO DISK='<filePath>' ALTER AVAILABILITY GROUP containedag ADD DATABASE <databaseName>
Následující příklad přidá databázi s názvem
WideWorldImporters
, která byla obnovena v instanci:ALTER DATABASE WideWorldImporters SET RECOVERY FULL; BACKUP DATABASE WideWorldImporters TO DISK='/var/opt/mssql/data/WideWorldImporters.bak' ALTER AVAILABILITY GROUP containedag ADD DATABASE WideWorldImporters
Důležité
Osvědčeným postupem je odstranit službu Kubernetes vytvořenou výše spuštěním tohoto příkazu:
kubectl delete svc sql2-0-p -n arc
Omezení
Spravovaná instance SQL povolená skupinami dostupnosti Azure Arc má stejná omezení jako skupiny dostupnosti clusteru s velkými objemy dat. Další informace najdete v tématu Nasazení clusteru s velkými objemy dat SQL Serveru s vysokou dostupností.
Související obsah
Další informace o funkcích a možnostech služby SQL Managed Instance povolené službou Azure Arc