Het beheren van back-ups voor SQL Server RDS-instanties is cruciaal om gegevensbeschikbaarheid en rampenherstel te waarborgen. AWS biedt tools om dit proces te vergemakkelijken, waaronder commando’s om SQL Server RDS-databases rechtstreeks naar Amazon S3 te back-uppen. Dit artikel loodst je door de benodigde commando’s en configuraties om back-ups en herstel uit te voeren.
SQL Server RDS back-uppen naar S3
De primaire opgeslagen procedure die wordt gebruikt voor het maken van back-ups is msdb.dbo.rds_backup_database
. Dit commando stelt je in staat om de te back-uppen database en de S3-locatie waar de back-up wordt opgeslagen, op te geven.
Pakketparameters
De opgeslagen procedure ondersteunt diverse parameters, die worden gecategoriseerd als vereist en optioneel.
Vereiste parameters
@source_db_name
: De naam van de database die moet worden back-upped.@s3_arn_to_backup_to
: De ARN die de Amazon S3-bucket aangeeft die moet worden gebruikt voor de back-up, inclusief de back-upbestandsnaam.- Het bestand kan elke extensie hebben, maar
.bak
wordt vaak gebruikt.
- Het bestand kan elke extensie hebben, maar
Optionele parameters
-
@kms_master_key_arn
- De ARN voor de symmetrische encryptie KMS-sleutel die gebruikt moet worden voor het versleutelen van de back-up.
- Je kunt de standaard encryptiesleutel niet gebruiken. Het gebruik van de standaard sleutel zal resulteren in een mislukte back-up.
- Als je geen KMS-sleutel opgeeft, wordt het back-upbestand niet versleuteld.
- Alleen symmetrische KMS-sleutels worden ondersteund.
-
@overwrite_s3_backup_file
- Bepaalt of een bestaand bestand moet worden overschreven.
0
(standaard): Overschrijft geen bestaand bestand. Geeft een foutmelding als het bestand al bestaat.1
: Overschrijft het bestaande bestand, zelfs als het geen back-upbestand is.
-
@type
- Het type back-up wordt gespecificeerd.
FULL
(standaard): Voert een volledige back-up uit.DIFFERENTIEEL
: Maakt een differentiële back-up op basis van de laatste volledige back-up.- Belangrijk: Om differentiële back-ups te laten werken, mag er geen momentopname bestaan tussen de laatste volledige back-up en de differentiële back-up. Als er een momentopname bestaat, voer dan nog een volledige back-up uit voordat u de differentiële back-up uitvoert. Hieronder staat een voorbeeldquery om de laatste volledige back-up te controleren:
MS SQL
select top 1
database_name,
backup_start_date,
backup_finish_date
from msdb.dbo.backupset
where database_name = 'mijn database'
en type = 'D'
order by backup_start_date desc;
-
@aantal_bestanden
- Geeft het aantal bestanden (chunks) aan waarin de back-up zal worden verdeeld. Maximaal: 10.
- Indien ingesteld op
1
of weggelaten, wordt er een enkel back-upbestand gemaakt. - Multi-bestandsback-ups moeten een enkele
*
in de bestandsnaam gebruiken, die tijdens de generatie zal worden vervangen door alfanumerieke tekens. Bijvoorbeeld:- Invoer:
backup*.bak
,@aantal_bestanden = 4
- Uitvoer:
backup1-van-4.bak
,backup2-van-4.bak
,backup3-van-4.bak
,backup4-van-4.bak
- Invoer:
-
@block_size
- Geeft de fysieke blokgrootte (in bytes) voor backupoperaties aan.
- Geldige waarden:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
.
-
@max_transfer_size
- Geeft de maximale hoeveelheid gegevens (in bytes) aan die per I/O-operatie wordt overgedragen.
- Geldige waarden: Veelvouden van
65536
bytes tot4194304
bytes (4 MB).
-
@buffer_count
- Totaal aantal I/O-buffers dat tijdens het backupproces wordt gebruikt.
Opdracht Syntax
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];
Voorbeeld: Volledige Backup naar 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';
Configureren van Backupcompressie
Om ruimte te besparen en de overdrachtstijd te verkorten, kunt u compressie inschakelen voor SQL Server RDS-backups met behulp van de rdsadmin
opdrachten.
Compressie inschakelen
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
Uitschakelen van Compressie
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
Opmerking: SQL Express ondersteunt geen back-upcompressie; het inschakelen hiervan in dergelijke gevallen zal resulteren in een back-upfout.
Uitvoeren van Native SQL Server Back-ups
Amazon RDS ondersteunt ook de functionaliteit voor native SQL Server-back-ups. Hieronder staan commando’s voor back-up- en herstelbewerkingen.
Back-up Commando’s
Volledig Back-up Commando
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';
Differentiële Back-up Commando
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;
Herstel Commando
Differentiëel Herstel Commando
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';
Differentiëel Herstel Commando
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;
Back-uptaken Monitoren en Beheren
Controleer de taakstatus:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
Annuleer een back-uptaak:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
Overwegingen
- Zorg ervoor dat de S3-bucket die wordt gebruikt in de commando’s de nodige machtigingen heeft om toegang vanaf de RDS-instantie toe te staan.
- Voor gevoelige data kunt u een AWS KMS-master key gebruiken om back-ups te versleutelen voordat u ze opslaat in S3 door
@kms_master_key_arn
te specificeren.
Extra Bronnen
Voor meer gedetailleerde voorbeelden en informatie, raadpleeg de officiële AWS-documentatie over SQL Server-back-ups.
Deze handleiding biedt een solide basis voor het beheren van SQL Server RDS-back-ups met Amazon S3. Voor meer geavanceerde configuraties kunt u de AWS-documentatie raadplegen of experimenteren met de verstrekte parameters om het back-upproces af te stemmen op uw omgeving.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket