Megosztás a következőn keresztül:


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ámogatja ReadWriteMany 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ót backups 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:

  1. controller sérült, és csak vissza kell állítania az adatbázist
  2. 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á:

  1. 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ő adatait system 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 és username. A base64 dekóder bármely eszközével dekódolhatja a kód tartalmát password.

    • 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"
      
  2. 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
    
  3. Csatlakozzon az SQL Serverhez system az controldb 1. lépésben leírtak szerint.

  4. Törölje a sérült vezérlőadatbázist a T-SQL használatával:

    DROP DATABASE controller
    
  5. 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
    
  6. 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:

  1. 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

  2. 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
    
  3. 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`
    
  4. 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>
    
  5. Szerkessze a controldb StatefulSetet úgy, hogy egy kötetet és a controller-sa-secret megfelelő kötet csatlakoztatását (/var/run/secrets/mounts/credentials/mssql-sa-password) is belefoglalja a tárolóba a mssql-server parancs használatával kubectl edit sts controldb -n <namespace> .

  6. Hozzon létre új adatokat (data-controldb) és naplókat (logs-controldb) állandó kötetjogcímeket a podhoz az controldb 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>
    
  7. A StatefulSet skálázása controldb 1 replikára a következőkkel:

    kubectl scale --replicas=1 sts/controldb -n <namespace>
    
  8. Csatlakozzon az controldb SQL-kiszolgálóhoz sa a korábban létrehozott titkos kódban szereplő controller-sa-secret jelszó használatával.

  9. Hozzon létre egy system sysadmin szerepkörrel rendelkező bejelentkezést a kubernetes titkos kódban található jelszó használatával az controller-system-secret alábbiak szerint:

    CREATE LOGIN [system] WITH PASSWORD = '<password-from-secret>'
    ALTER SERVER ROLE sysadmin ADD MEMBER [system]
    
  10. Á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
  1. Hozzon létre egy bejelentkezést controldb-rw-user a controller-db-rw-secret titkos CREATE LOGIN [controldb-rw-user] WITH PASSWORD = '<password-from-secret>' jelszóval, és társítsa azt a vezérlőadatbázis ALTER USER [controldb-rw-user] WITH LOGIN = [controldb-rw-user]meglévő controldb-rw-user felhasználójával.

  2. Tiltsa le a bejelentkezést a sa TSQL használatával – ALTER LOGIN [sa] DISABLE.

  3. Szerkessze a controldb StatefulSetet a kötet és a megfelelő kötet csatlakoztatásának controller-sa-secret eltávolításához.

  4. Törölje a controller-sa-secret titkos kódot.

  5. A vezérlő ReplicaSet biztonsági másolatát 1 replikára skálázhatja a kubectl scale paranccsal.

Azure Data Studio-irányítópultok