ネイティブバックアップおよび復元は、Amazon RDS でサポートされているすべてのエディションの Microsoft SQL Server で使用できます。
DB インスタンスでネイティブバックアップおよび復元を有効にするには、
DB インスタンスのオプショングループに SQLSERVER_BACKUP_RESTORE オプションを追加します。
-- 1. S3バケット作成
aws s3 mb s3://bucket123
aws s3 ls
-- 2. IAMポリシー作成
vim policy01.json
{
"Version": "2012-10-17",
"Statement":
[
{
"Effect": "Allow",
"Action":
[
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::bucket123"
},
{
"Effect": "Allow",
"Action":
[
"s3:GetObject",
"s3:PutObject",
"s3:ListMultipartUploadParts",
"s3:AbortMultipartUpload"
],
"Resource": "arn:aws:s3:::bucket123/*"
}
]
}
aws iam create-policy \
--policy-name policy01 \
--policy-document file://policy01.json
{
"Version": "2012-10-17",
"Statement":
[{
"Effect": "Allow",
"Principal": {"Service": "rds.amazonaws.com"},
"Action": "sts:AssumeRole"
}]
}
aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json
-- 4. ポリシーをロールにアタッチ
aws iam attach-role-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01 \
--role-name role01
-- 5. RDSインスタンス作成
aws rds describe-db-engine-versions \
--engine sqlserver-ex \
| jq -c '.DBEngineVersions | [ .Engine, .EngineVersion ]'
aws rds create-option-group \
--option-group-name og01 \
--engine-name sqlserver-ex \
--major-engine-version 15.00 \
--option-group-description "og01"
aws rds add-option-to-option-group \
--apply-immediately \
--option-group-name og01 \
--options "OptionName=SQLSERVER_BACKUP_RESTORE,OptionSettings=[{Name=IAM_ROLE_ARN,Value=arn:aws:iam::999999999999:role/role01}]"
aws rds create-db-instance \
--db-instance-identifier sqlserver01 \
--allocated-storage 20 \
--db-instance-class db.t3.small \
--engine sqlserver-ex \
--master-username sa \
--master-user-password 'password' \
--no-multi-az \
--engine-version 15.00.4073.23.v1 \
--storage-type gp2 \
--no-publicly-accessible \
--no-enable-performance-insights \
--no-auto-minor-version-upgrade \
--option-group-name og01
-- 6. データベースのバックアップ
exec msdb.dbo.rds_backup_database
@source_db_name='test',
@s3_arn_to_backup_to='arn:aws:s3:::bucket123/test.bak',
@overwrite_s3_backup_file=1,
@type='FULL',
@number_of_files=1;
aws s3 ls s3://bucket123
-- 7. タスクのステータスの追跡
exec msdb.dbo.rds_task_status;
-- 8. データベースの復元
exec msdb.dbo.rds_restore_database
@restore_db_name='test2',
@s3_arn_to_restore_from='arn:aws:s3:::bucket123/test.bak',
@with_norecovery=0,
@type='FULL';
-- 9. クリーンアップ
-- RDSインスタンス削除
aws rds delete-db-instance \
--db-instance-identifier sqlserver01 \
--skip-final-snapshot
-- ロールの一覧
aws iam list-roles | grep role01
-- ロールの削除
aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::999999999999:policy/policy01
aws iam delete-role --role-name role01
-- ポリシーの一覧
aws iam list-policies | grep policy01
-- ポリシーの削除
aws iam delete-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01
-- バケット削除
aws s3 rb s3://bucket123 --force
-- オプショングループ一覧
aws rds describe-option-groups
aws rds describe-option-groups | jq -r '.OptionGroupsList.OptionGroupName'
-- オプショングループ削除
aws rds delete-option-group --option-group-name og01