SQL Server-Datenbanken in einem Cloud Storage-Bucket sichern

In dieser Anleitung wird beschrieben, wie Sie eine Microsoft SQL Server 2022-Datenbank direkt in einem Cloud Storage-Bucket sichern und später wiederherstellen. Die in SQL Server 2022 eingeführte native SQL Server-Sicherungsfunktion bietet eine nahtlose und kostengünstige Strategie für cloudbasierte Notfallwiederherstellung und Datenmigration.

Für die native SQL Server-Sicherungsfunktion werden die Befehle BACKUP TO URL und RESTORE FROM URL verwendet, die S3-kompatiblen Objektspeicher, einschließlich Cloud Storage, unterstützen. Dadurch ist kein lokaler Zwischenspeicher mehr erforderlich, was den Sicherungsworkflow vereinfacht und den Betriebsaufwand reduziert.

Diese Anleitung richtet sich an Datenbankadministratoren und ‑entwickler.

Cloud Storage-Bucket erstellen

Sie können einen Cloud Storage-Bucket mit der Google Cloud -Konsole oder mit dem gcloud storage-Befehl erstellen.

So erstellen Sie einen Cloud Storage-Bucket mit dem Befehl gcloud storage:

  1. Wählen Sie Ihr Google Cloud Projekt aus.

    gcloud config set project PROJECT_ID
    
  2. Erstellen Sie den Bucket: Führen Sie den gcloud storage buckets create-Befehl wie folgt aus, um den Bucket zu erstellen.

      gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
    

    Ersetzen Sie Folgendes:

  • BUCKET_NAME durch einen eindeutigen Namen für Ihren Bucket.
  • BUCKET_LOCATION durch den Standort Ihres Buckets.

S3-Interoperabilität konfigurieren und Zugriffsschlüssel erstellen

Damit SQL Server über das S3-Protokoll mit Cloud Storage kommunizieren kann, müssen Sie die Interoperabilität aktivieren und einen Zugriffsschlüssel generieren. Gehen Sie dazu so vor:

  1. Rufen Sie in der Google Cloud Console die Cloud Storage-Einstellungen auf.

    Cloud Storage-Einstellungen aufrufen

  2. Wählen Sie den Tab Interoperabilität aus.

  3. Klicken Sie unter Zugriffsschlüssel für Ihr Nutzerkonto auf Schlüssel erstellen.

    Bucket-Zugriffsschlüssel

  4. Speichern Sie den generierten Zugriffsschlüssel und das Secret sicher. Sie benötigen sie im nächsten Schritt.

Für Produktionsumgebungen empfehlen wir, einen Dienstkonto-HMAC-Schlüssel (Hash-based Message Authentication Code, HMAC) zu verwenden, um die Sicherheit und Verwaltung zu verbessern.

Anmeldedaten zu SQL Server hinzufügen

Damit sich SQL Server bei Ihrem Cloud Storage-Bucket authentifizieren kann, müssen Sie in SQL Server ein Anmeldedatenobjekt erstellen, in dem der Cloud Storage-Zugriffsschlüssel und das Secret gespeichert werden. Führen Sie dazu den folgenden T-SQL-Befehl in SQL Server Management Studio (SSMS) aus.

CREATE CREDENTIAL CREDENTIAL_NAME
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'ACCESS_KEY:SECRET';

Ersetzen Sie Folgendes:

  • CREDENTIAL_NAME: mit einem Namen für Ihre Anmeldedaten.
  • ACCESS_KEY: mit dem Zugriffsschlüssel, den Sie im vorherigen Abschnitt erstellt haben.
  • SECRET: mit dem Secret, das Sie im vorherigen Abschnitt erstellt haben.

IDENTITY = 'S3 Access Key' ist wichtig, da SQL Server dadurch angewiesen wird, den neuen S3-Connector zu verwenden. Das Secret sollte als Zugriffsschlüssel formatiert werden, gefolgt von einem Doppelpunkt und dann dem geheimen Schlüssel.

Beispiel:

CREATE CREDENTIAL sql_backup_credentials
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';

Daten in Cloud Storage sichern

Nachdem Sie die Anmeldedaten eingerichtet haben, können Sie Ihre Datenbank mit dem Befehl BACKUP DATABASE und der Option TO URL direkt in den Cloud Storage-Bucket sichern. Stellen Sie der URL das Präfix s3://storage.googleapis.com voran, um den S3-Connector zu verwenden.

BACKUP DATABASE DATABASE_NAME
TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

Ersetzen Sie Folgendes:

  • CREDENTIAL_NAME: Der Name der Anmeldedaten, die Sie in Schritt 3 erstellt haben. Beispiel: sql_backup_credentials.
  • BUCKET_NAME: Der Name des Buckets, den Sie in Schritt 1 erstellt haben.
  • FOLDER_NAME: Der Name des Ordners, in dem Sie die Sicherungsdatei speichern möchten.
  • BACKUP_FILE_NAME: Der Name der Sicherungsdatei.

Die Beschreibungen der im Befehl verwendeten Sicherungsparameter sind wie folgt:

  • FORMAT: Überschreibt die vorhandenen Sicherungsdateien und erstellt einen neuen Mediensatz.
  • STATS: Meldet den Fortschritt der Sicherung.
  • COMPRESSION: Komprimiert die Sicherung, wodurch die Dateigröße und die Uploadzeit reduziert werden können.
  • MAXTRANSFERSIZE: Empfohlen, um E/A-Fehler bei großen Sicherungsdateien zu vermeiden.

Weitere Informationen finden Sie unter SQL Server-Sicherung auf URL für S3-kompatiblen Objektspeicher.

Bei sehr großen Datenbanken können Sie die Sicherung wie folgt in mehrere Dateien aufteilen.

BACKUP DATABASE DATABASE_NAME
TO
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_0.bak',
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_1.bak'
    -- ... more files
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

Daten aus Cloud Storage wiederherstellen

Sie können Ihre Datenbank direkt aus einer Sicherungsdatei wiederherstellen, die in Cloud Storage gespeichert ist. Verwenden Sie dazu den Befehl RESTORE DATABASE wie unten beschrieben.

RESTORE DATABASE DATABASE_NAME
FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME';

Ersetzen Sie Folgendes:

  • CREDENTIAL_NAME: Der Name der Anmeldedaten, die Sie in Schritt 3 erstellt haben. Beispiel: sql_backup_credentials.
  • BUCKET_NAME: Der Name des Buckets, den Sie in Schritt 1 erstellt haben.
  • FOLDER_NAME: Der Name des Ordners, in dem Sie die Sicherungsdatei speichern möchten.
  • BACKUP_FILE_NAME: Der Name der Sicherungsdatei.