Vezérlőadatbázis biztonsági mentése és helyreállítása
Az Azure Arc-adatszolgáltatások üzembe helyezésekor az Azure Arc-adatkezelő az egyik legfontosabb üzembe helyezett összetevő. Az adatkezelő funkciói a következők:
- Erőforrások kiépítése, megszüntetése és frissítése
- Vezényelje az Azure Arc által engedélyezett felügyelt SQL-példányok legtöbb tevékenységét, például a frissítéseket, a vertikális felskálázást stb.
- Rögzítse a felügyelt Arc SQL-példányok számlázási és használati adatait.
A fenti funkciók végrehajtásához az adatkezelőnek leltárt kell tárolnia az összes felügyelt SQL SQL-példányról, számlázásról, használatról és az összes felügyelt SQL-példány aktuális állapotáról. Ezeket az adatokat egy, a podba telepített SQL Server-példányon belül hívott controller
adatbázisban tárolja a controldb-0
rendszer.
Ez a cikk a vezérlőadatbázis biztonsági mentését ismerteti.
Az adatkezelő adatbázisának biztonsági mentése
A beépített képességek részeként az adatkezelő adatbázisa controller
automatikusan 5 percenként biztonsági másolatot készít a biztonsági mentések engedélyezése után. Biztonsági mentések engedélyezése:
- Hozzon létre egy
backups-controldb
PersistentVolumeClaim
olyan tárosztályt, amely támogatjaReadWriteMany
a hozzáférést:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: backups-controldb
namespace: <namespace>
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 15Gi
storageClassName: <storage-class>
- Módosítsa az
DataController
egyéni erőforrás-specifikációtbackups
egy tárdefiníció belefoglalásához:
storage:
backups:
accessMode: ReadWriteMany
className: <storage-class>
size: 15Gi
data:
accessMode: ReadWriteOnce
className: managed-premium
size: 15Gi
logs:
accessMode: ReadWriteOnce
className: managed-premium
size: 10Gi
Az .bak
adatbázis fájljai a controller
pod kötetén backups
vannak tárolva a controldb
következő helyen /var/opt/backups/mssql
: .
Vezérlőadatbázis helyreállítása
A helyreállításnak két típusa lehetséges:
controller
sérült, és csak vissza kell állítania az adatbázist- az adatokat és naplófájlokat tartalmazó
controller
teljes tárterület sérült/el lett mentve, és helyre kell állítania
Sérült vezérlőadatbázis-forgatókönyv
Ebben a forgatókönyvben az összes pod működik, csatlakozhat az controldb
SQL Serverhez, és az adatbázis sérülést controller
okozhat. Csak egy biztonsági másolatból kell visszaállítania az adatbázist.
Az alábbi lépéseket követve visszaállíthatja a vezérlőadatbázist egy biztonsági másolatból, ha az SQL Server továbbra is működik a controldb
podon, és csatlakozni tud hozzá:
Ellenőrizze az adatbázist üzemeltető SQL Server-podhoz való kapcsolódást
controller
.Először kérje le a titkos kulcs hitelesítő adatait.
controller-system-secret
Az SQL-példányhoz való csatlakozáshoz használható felhasználói fiók hitelesítő adataitsystem
tartalmazó titkos kód. Futtassa a következő parancsot a titkos kód tartalmának lekéréséhez:kubectl get secret controller-system-secret --namespace [namespace] -o yaml
Példa:
kubectl get secret controller-system-secret --namespace arcdataservices -o yaml
Dekódolja a base64 kódolású hitelesítő adatokat. A titkos kód
controller-system-secret
password
yaml-fájljának tartalma egy ésusername
. A base64 dekóder bármely eszközével dekódolhatja a kód tartalmátpassword
.Kapcsolat ellenőrzése: A dekódolt hitelesítő adatokkal futtasson egy parancsot, például
SELECT @@SERVERNAME
az SQL Serverhez való kapcsolódás ellenőrzéséhez.kubectl exec controldb-0 -n <namespace> -c mssql-server -- /opt/mssql-tools/bin/sqlcmd -S localhost -U system -P "<password>" -Q "SELECT @@SERVERNAME"
kubectl exec controldb-0 -n contosons -c mssql-server -- /opt/mssql-tools/bin/sqlcmd -S localhost -U system -P "<password>" -Q "SELECT @@SERVERNAME"
A controller ReplicaSet skálázása 0 replikára az alábbiak szerint:
kubectl scale --replicas=0 rs/control -n <namespace>`
Példa:
kubectl scale --replicas=0 rs/control -n arcdataservices
Csatlakozzon az SQL Serverhez
system
azcontroldb
1. lépésben leírtak szerint.Törölje a sérült vezérlőadatbázist a T-SQL használatával:
DROP DATABASE controller
Az adatbázis visszaállítása biztonsági másolatból – a sérült
controllerdb
elvetése után. Példa:RESTORE DATABASE test FROM DISK = '/var/opt/backups/mssql/<controller backup file>.bak' WITH MOVE 'controller' to '/var/opt/mssql/data/controller.mdf ,MOVE 'controller' to '/var/opt/mssql/data/controller_log.ldf' ,RECOVERY; GO
A controller ReplicaSet biztonsági mentésének skálázása 1 replikára.
kubectl scale --replicas=1 rs/control -n <namespace>
Példa:
kubectl scale --replicas=1 rs/control -n arcdataservices
Sérült tárolási forgatókönyv
Ebben a forgatókönyvben az adatkezelő adatait és naplófájljait üzemeltető tároló sérült, új tároló lett kiépítve, és vissza kell állítania a vezérlőadatbázist.
Az alábbi lépéseket követve visszaállíthatja a vezérlőadatbázist egy biztonsági másolatból a controldb
StatefulSet új tárterületével:
Győződjön meg arról, hogy biztonsági másolatot készít az adatbázis utolsó ismert jó állapotáról
controller
A controller ReplicaSet skálázása 0 replikára az alábbiak szerint:
kubectl scale --replicas=0 rs/control -n <namespace>
Példa:
kubectl scale --replicas=0 rs/control -n arcdataservices
controldb
A StatefulSet 0 replikára skálázható az alábbiak szerint:kubectl scale --replicas=0 sts/controldb -n <namespace>
Példa:
kubectl scale --replicas=0 sts/controldb -n arcdataservices`
Hozzon létre egy kubernetes-titkos kulcsot a következő YAML-lel:
controller-sa-secret
apiVersion: v1 kind: Secret metadata: name: controller-sa-secret namespace: <namespace> type: Opaque data: password: <base64 encoded password>
Szerkessze a
controldb
StatefulSetet úgy, hogy egy kötetet és acontroller-sa-secret
megfelelő kötet csatlakoztatását (/var/run/secrets/mounts/credentials/mssql-sa-password
) is belefoglalja a tárolóba amssql-server
parancs használatávalkubectl edit sts controldb -n <namespace>
.Hozzon létre új adatokat (
data-controldb
) és naplókat (logs-controldb
) állandó kötetjogcímeket a podhoz azcontroldb
alábbiak szerint:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data-controldb namespace: <namespace> spec: accessModes: - ReadWriteOnce resources: requests: storage: 15Gi storageClassName: <storage class> --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: logs-controldb namespace: <namespace> spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: <storage class>
A StatefulSet skálázása
controldb
1 replikára a következőkkel:kubectl scale --replicas=1 sts/controldb -n <namespace>
Csatlakozzon az
controldb
SQL-kiszolgálóhozsa
a korábban létrehozott titkos kódban szereplőcontroller-sa-secret
jelszó használatával.Hozzon létre egy
system
sysadmin szerepkörrel rendelkező bejelentkezést a kubernetes titkos kódban található jelszó használatával azcontroller-system-secret
alábbiak szerint:CREATE LOGIN [system] WITH PASSWORD = '<password-from-secret>' ALTER SERVER ROLE sysadmin ADD MEMBER [system]
Állítsa vissza a biztonsági mentést a
RESTORE
következő paranccsal:
RESTORE DATABASE [controller] FROM DISK = N'/var/opt/backups/mssql/<controller backup file>.bak' WITH FILE = 1
Hozzon létre egy bejelentkezést
controldb-rw-user
acontroller-db-rw-secret
titkosCREATE LOGIN [controldb-rw-user] WITH PASSWORD = '<password-from-secret>'
jelszóval, és társítsa azt a vezérlőadatbázisALTER USER [controldb-rw-user] WITH LOGIN = [controldb-rw-user]
meglévőcontroldb-rw-user
felhasználójával.Tiltsa le a bejelentkezést a
sa
TSQL használatával –ALTER LOGIN [sa] DISABLE
.Szerkessze a
controldb
StatefulSetet a kötet és a megfelelő kötet csatlakoztatásánakcontroller-sa-secret
eltávolításához.Törölje a
controller-sa-secret
titkos kódot.A vezérlő ReplicaSet biztonsági másolatát 1 replikára skálázhatja a
kubectl scale
paranccsal.