4
3

More than 5 years have passed since last update.

RDS for SQL Server へのインポート

Last updated at Posted at 2018-08-30

はじめに

オンプレの 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 メニューからオプショングループを選択して、[グループの作成]を押下する
screen_capture_08-30.png

下記の項目を適当に設定する

  • 名前
  • 説明
  • エンジン
  • メジャーエンジンのバージョン screen_capture_08-30(0).png

グループを作成しただけでは、SQLSERVER_BACKUP_RESTORE は有効になっていないので、[オプションの追加]を押下する
screen_capture_08-30(1).png

オプションは SQLSERVER_BACKUP_RESTORE しか選択できないので、これを選択する
IAM ロールは作成していないのであれば、ここで作成が可能
screen_capture_08-30(2).png

ここで作成された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'/*"
            ]
        }
    ]
}

オプション追加後は下図のようになる
screen_capture_08-30(3).png

このオプショングループを 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';

screen_capture_08-30.png

インポートのジョブが動き始めることを確認する
screen_capture_08-30(0).png

ジョブの結果を確認するには、下記のクエリを実行する
database_name は環境に合わせて変更すること

exec msdb.dbo.rds_task_status @db_name='database_name';

screen_capture_08-30(1).png

lifecycle が状態を示す。下図の場合は、実行中を示す
screen_capture_08-30(2).png

lifecycle が SUCCESS となれば完了
screen_capture_08-30(3).png

仲間募集中

弊社ではエンジニアを募集中です。インフラからアプリ、ユーザサポートまで幅広く業務を行ってます。
https://www.nittsu-infosys.com/recruit/2019/index.html

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3