SQL Server RDSインスタンスのバックアップを管理することは、データの可用性と災害復旧を確保するために不可欠です。AWSはこのプロセスを容易にするためのツールを提供しており、SQL Server RDSデータベースを直接Amazon S3にバックアップするためのコマンドも含まれています。この記事では、バックアップとリストアを実行するために必要なコマンドと構成について説明します。
SQL Server RDSをS3にバックアップする
バックアップの作成に使用される主要なストアドプロシージャはmsdb.dbo.rds_backup_database
です。このコマンドを使用すると、バックアップするデータベースとバックアップ先のS3の場所を指定できます。
パッケージパラメータ
このストアドプロシージャは、いくつかのパラメータをサポートしており、これらは必須とオプションに分類されています。
必須パラメータ
@source_db_name
:バックアップするデータベースの名前。@s3_arn_to_backup_to
:バックアップに使用するAmazon S3バケットを示すARNであり、バックアップファイル名も含まれています。- ファイルには任意の拡張子を使用できますが、
.bak
が一般的に使用されます。
- ファイルには任意の拡張子を使用できますが、
オプションのパラメータ
-
@kms_master_key_arn
- バックアップの暗号化に使用する対称暗号化KMSキーのARN。
- デフォルトの暗号化キーは使用できません。デフォルトキーを使用すると、バックアップが失敗します。
- KMSキーを指定しない場合、バックアップファイルは暗号化されません。
- 対称KMSキーのみがサポートされています。
-
@overwrite_s3_backup_file
- 既存のファイルを上書きするかどうかを決定します。
0
(デフォルト):既存のファイルを上書きしません。ファイルが既に存在する場合はエラーが返されます。1
:既存のファイルを上書きします。バックアップファイルでなくても上書きします。
-
@type
- バックアップの種類を指定します。
FULL
(デフォルト):完全バックアップを実行します。DIFFERENTIAL
:最後の完全バックアップに基づいて差分バックアップを作成します。- 重要:差分バックアップを行うためには、最後の完全バックアップと差分バックアップの間にスナップショットが存在していない必要があります。スナップショットが存在する場合は、差分バックアップの前に別の完全バックアップを実行してください。以下は最後の完全バックアップを確認するための例のクエリです:
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
- バックアップを分割するファイル(チャンク)の数を指定します。最大: 10。
- 設定された場合は
1
、または省略されると、単一のバックアップファイルが作成されます。 - マルチファイルバックアップでは、ファイル名に単一の
*
を使用する必要があり、生成中に英数字の文字列に置換されます。例:- 入力:
backup*.bak
,@number_of_files = 4
- 出力:
backup1-of-4.bak
,backup2-of-4.bak
,backup3-of-4.bak
,backup4-of-4.bak
- 入力:
-
@block_size
- バックアップ操作の物理ブロックサイズ(バイト単位)を指定します。
- 有効な値:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
。
-
@max_transfer_size
- I/O 操作ごとに転送されるデータの最大量(バイト単位)を示します。
- 有効な値:
65536
バイトの倍数で、4194304
バイト(4 MB)まで。
-
@buffer_count
- バックアッププロセス中に使用される I/O バッファの総数。
コマンド構文
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];
例: 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';
バックアップ圧縮の構成
スペースを節約し転送時間を短縮するために、SQL Server RDS バックアップ用に圧縮を有効にできます。 rdsadmin
コマンドを使用します。
圧縮を有効化
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
圧縮を無効にする
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
注意: SQL Expressはバックアップの圧縮をサポートしていません。このような場合に有効にすると、バックアップが失敗します。
ネイティブSQL Serverバックアップの実行
Amazon RDSはネイティブSQL Serverバックアップ機能もサポートしています。以下はバックアップおよびリストア操作のコマンドです。
バックアップコマンド
完全バックアップコマンド
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';
差分バックアップコマンド
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;
リストアコマンド
差分リストアコマンド
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';
差分リストアコマンド
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;
バックアップタスクの監視と管理
タスクのステータスを確認する:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
バックアップタスクをキャンセルする:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
考慮事項
- コマンドで使用されるS3バケットがRDSインスタンスからのアクセスを許可するための必要なアクセス権限を持っていることを確認してください。
- 機密データの場合、
@kms_master_key_arn
を指定してS3に保存する前にバックアップを暗号化するためにAWS KMSマスターキーを使用できます。
追加リソース
詳細な例や情報については、公式のAWS documentation on SQL Server backupsを参照してください。
このガイドでは、Amazon S3を使用してSQL Server RDSバックアップを管理するための堅固な基盤が提供されています。より高度な構成については、AWSのドキュメントを参照するか、提供されたパラメータを実験して環境に応じてバックアッププロセスを微調整してください。
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket