はじめに
オンプレの SQL Server のバックアップから RDS for SQL Server にデータをインポートするときの手順。
ここに全部書いてあることなので、難しいことはない。ただ、制限事項がいくつかあるので、注意すること。
だいたいの流れ
- bak ファイルを S3 に置く
- DB インスタンスにオプショングループ(SQLSERVER_BACKUP_RESTORE)を追加する
- S3 にアクセスする IAM Role を作る
- rds_restore_database ストアドプロシージャを呼び出して復元
実際にやってみた
bak ファイルを S3 に置く
割愛
DB インスタンスにオプショングループ(SQLSERVER_BACKUP_RESTORE)の追加
SQLServer の DB インスタンスはすでに存在している前提で
まず、RDS メニューからオプショングループを選択して、[グループの作成]を押下する
下記の項目を適当に設定する
グループを作成しただけでは、SQLSERVER_BACKUP_RESTORE は有効になっていないので、[オプションの追加]を押下する
オプションは SQLSERVER_BACKUP_RESTORE しか選択できないので、これを選択する
IAM ロールは作成していないのであれば、ここで作成が可能
ここで作成されたIAM ロールは下記のようになっている
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::'bucket_name'"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObjectMetaData",
"s3:GetObject",
"s3:PutObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": [
"arn:aws:s3:::'bucket_name'/*"
]
}
]
}
このオプショングループを DB インスタンスに反映させる
復元
SQL Server Management Studio で接続し、新しいクエリで以下を実行する
database_name と bucket_name、file_name は環境に合わせて変更すること
exec msdb.dbo.rds_restore_database
@restore_db_name='database_name',
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name';
ジョブの結果を確認するには、下記のクエリを実行する
database_name は環境に合わせて変更すること
exec msdb.dbo.rds_task_status @db_name='database_name';
lifecycle が状態を示す。下図の場合は、実行中を示す
仲間募集中
弊社ではエンジニアを募集中です。インフラからアプリ、ユーザサポートまで幅広く業務を行ってます。
https://www.nittsu-infosys.com/recruit/2019/index.html