Das Verwalten von Backups für SQL Server RDS-Instanzen ist entscheidend, um die Datenverfügbarkeit und die Notfallwiederherstellung sicherzustellen. AWS stellt Tools zur Verfügung, um diesen Prozess zu erleichtern, einschließlich Befehlen zum Sichern von SQL Server RDS-Datenbanken direkt in Amazon S3. Dieser Artikel führt Sie durch die Befehle und Konfigurationen, die für das Durchführen von Backups und Wiederherstellungen erforderlich sind.
SQL Server RDS-Backups in S3 sichern
Die hauptsächlich verwendete gespeicherte Prozedur zum Erstellen von Backups ist msdb.dbo.rds_backup_database
. Dieser Befehl ermöglicht es Ihnen, die zu sichernde Datenbank und den S3-Speicherort anzugeben, an dem das Backup gespeichert wird.
Paketparameter
Die gespeicherte Prozedur unterstützt mehrere Parameter, die als obligatorisch und optional kategorisiert sind.
Obligatorische Parameter
@source_db_name
: Der Name der Datenbank, die gesichert werden soll.@s3_arn_to_backup_to
: Die ARN, die den Amazon S3-Bucket für das Backup angibt, einschließlich des Backup-Dateinamens.- Die Datei kann eine beliebige Erweiterung haben, aber
.bak
wird üblicherweise verwendet.
- Die Datei kann eine beliebige Erweiterung haben, aber
Optionale Parameter
-
@kms_master_key_arn
- Die ARN für den symmetrischen Verschlüsselung KMS-Schlüssel, der zur Verschlüsselung des Backups verwendet werden soll.
- Sie können den Standard-Verschlüsselungsschlüssel nicht verwenden. Die Verwendung des Standard-Schlüssels führt zu einem Backup-Fehler.
- Wenn Sie keinen KMS-Schlüssel angeben, wird die Backup-Datei nicht verschlüsselt.
- Nur symmetrische KMS-Schlüssel werden unterstützt.
-
@overwrite_s3_backup_file
- Legt fest, ob eine vorhandene Datei überschrieben werden soll.
0
(Standard): Überschreibt keine vorhandene Datei. Gibt einen Fehler zurück, wenn die Datei bereits vorhanden ist.1
: Überschreibt die vorhandene Datei, auch wenn es sich nicht um eine Backup-Datei handelt.
-
@type
- Gibt den Typ des Backups an.
FULL
(Standard): Führt ein vollständiges Backup durch.DIFFERENTIAL
: Erstellt ein differentielles Backup basierend auf dem letzten vollständigen Backup.- Wichtig: Damit differentielle Backups funktionieren, darf kein Snapshot zwischen dem letzten vollständigen Backup und dem differentiellen Backup existieren. Wenn ein Snapshot vorhanden ist, führen Sie ein weiteres vollständiges Backup vor dem differentiellen Backup durch. Hier ist eine Beispielanfrage, um das letzte vollständige Backup zu überprüfen:
MS SQL
select top 1
database_name,
backup_start_date,
backup_finish_date
from msdb.dbo.backupset
where database_name = 'mydatabase'
and type = 'D'
order by backup_start_date desc;
-
@number_of_files
- Legt die Anzahl der Dateien (Chunks) fest, in die das Backup aufgeteilt wird. Maximum: 10.
- Wenn auf
1
gesetzt oder ausgelassen wird, wird eine einzelne Backup-Datei erstellt. - Multifile-Backups müssen ein einzelnes
*
im Dateinamen verwenden, das während der Generierung durch alphanumerische Zeichen ersetzt wird. Zum Beispiel:- Eingabe:
backup*.bak
,@number_of_files = 4
- Ausgabe:
backup1-of-4.bak
,backup2-of-4.bak
,backup3-of-4.bak
,backup4-of-4.bak
- Eingabe:
-
@block_size
- Legt die physische Blockgröße (in Bytes) für Sicherungsvorgänge fest.
- Gültige Werte:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
.
-
@max_transfer_size
- Bezeichnet die maximale Datenmenge (in Bytes), die pro E/A-Vorgang übertragen wird.
- Gültige Werte: Vielfache von
65536
Bytes bis zu4194304
Bytes (4 MB).
-
@buffer_count
- Gesamtanzahl der E/A-Puffer, die während des Sicherungsvorgangs verwendet werden.
Befehlssyntax
exec msdb.dbo.rds_backup_database
@source_db_name = 'database_name',
@s3_arn_to_backup_to = 'arn:aws:s3:::bucket_name/file_name.extension',
[@kms_master_key_arn = 'arn:aws:kms:region:account-id:key/key-id'],
[@overwrite_s3_backup_file = 0|1],
[@block_size = 512|1024|2048|4096|8192|16384|32768|65536],
[@max_transfer_size = n],
[@buffer_count = n],
[@type = 'DIFFERENTIAL|FULL'],
[@number_of_files = n];
Beispiel: Vollständige Sicherung auf S3
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Konfigurieren der Sicherungskompression
Um Speicherplatz zu sparen und die Übertragungszeit zu reduzieren, können Sie die Kompression für SQL Server RDS-Sicherungen mithilfe der rdsadmin
-Befehle aktivieren.
Aktivieren der Kompression
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
Deaktivieren der Komprimierung
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
Hinweis: SQL Express unterstützt keine Backup-Komprimierung; das Aktivieren in solchen Fällen führt zu einem Backup-Fehler.
Durchführung von nativen SQL Server-Backups
Amazon RDS unterstützt auch die native SQL Server-Backup-Funktionalität. Im Folgenden finden Sie Befehle für Backup- und Wiederherstellungsvorgänge.
Backup-Befehle
Vollständiger Backup-Befehl
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_diff.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Differenzieller Backup-Befehl
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/differential_backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
Wiederherstellungsbefehl
Differenzieller Wiederherstellungsbefehl
exec msdb.dbo.rds_restore_database
@restore_db_name = 'MyDatabase',
@s3_arn_to_restore_from = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@type = 'FULL';
Differenzieller Wiederherstellungsbefehl
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
Überwachung und Verwaltung von Backup-Aufgaben
Überprüfen Sie den Aufgabenstatus:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
Abbrechen einer Backup-Aufgabe:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
Betrachtungen
- Stellen Sie sicher, dass der im Befehl verwendete S3-Bucket über die erforderlichen Berechtigungen verfügt, um Zugriff vom RDS-Instanz zu ermöglichen.
- Für sensible Daten können Sie einen AWS KMS-Hauptschlüssel verwenden, um Backups zu verschlüsseln, bevor sie in S3 gespeichert werden, indem Sie
@kms_master_key_arn
angeben.
Zusätzliche Ressourcen
Weitere ausführliche Beispiele und Informationen finden Sie in der offiziellen AWS-Dokumentation zu SQL-Server-Backups.
Diese Anleitung bietet eine solide Grundlage für das Verwalten von SQL Server RDS-Backups mit Amazon S3. Für fortgeschrittenere Konfigurationen konsultieren Sie bitte die AWS-Dokumentation oder experimentieren Sie mit den bereitgestellten Parametern, um den Backup-Prozess gemäß Ihrer Umgebung zu optimieren.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket