オンプレミスからAWS RDSへMSSQLの移行方法

背景

1.オンプレミスからAWS RDSへMSSQLを移行方法はいくつかあります。

1.ネイティブバックアップおよび復元:
メリット:すべてのデータベースサイズをサポートします。
デメリット:ダウンタイムが必要です。

2.トランザクションレプリケーション:
メリット:ほぼリアルタイムのデータによる非同期レプリケーションをサポートし、サブスクライバデータベースも読み取り可能です。
デメリット:レプリケーションを実行するSQL Serverのレプリケーションジョブを綿密に監視する必要があります。

3.AWS Snowball Edge:流れはすべてのデータベースのバックアップまたはデータを Snowball デバイスに置き、データが Snowball にコピーされたら、AWSアプライアンスをに送信して、指定した S3 バケットに配置します。その後、Amazon S3 のバックアップにより復元します。
メリット:非常に大きなデータベース (最大 80 TB のサイズ) を移行できます。
デメリット:Snowball デバイスが必須です。

4.AWS DMS:手順簡単、事実上ダウンタイムなしでデータベースが移行できます。

2.Dumpfileにより移行

今回オンプレミス側のDBはダウンタイムがあるので、1の「ネイティブバックアップおよび復元」になっています。つまり、Dumpfileでの移行です。以下、「ネイティブバックアップ」を「Dumpfile」表記で示します。

作業流れはオンプレミスのDBDumpfileをS3へアップロードして、AWS RDSのMSSQL(Microsoft SQL Server)へ移行します。

検証しましたので、備忘録として構築手順を残したいと思います。

検証用の構成図

前提

・Networkが作成済みであること
・S3、RDSが作成済みであること
・DBのDumpfileがS3へアップロード済みであること
・SQL Server Management Studioのインストール済みであること

手順

1.RDSオプションの追加

[オプション名] :SQLSERVER_BACKUP_RESTORE
[IAM ロール]:新しいロールの作成
[IAMロール名]:任意
[S3バケット]:DumpfileがアップロードされたS3バケット名
[スケジューリング]:今すぐ
file
file
file

2.リストアの実施

2-1.RDSデータベースへのアクセス

SQL Server Management Studioを開きます。
[Server name]:RDSデータベースのエンドポイント
[Authentication] :SQL Server Authentication
[Login]:RDSデータベースのマスターユーザー名
[Password]:RDSデータベースのマスターパスワード
file
file

2-2.RDSデータベースへのリストア

Databasesを選択し、[New Query]を押下します。
file
以下のコマンドを入力し、[Execute]を押下します。
exec msdb.dbo.rds_restore_database
@restore_db_name=’<データベースの名前>’
@s3_arn_to_restore_from=’<S3でのdumpファイルのARN>’,
@type=’full’,
@with_norecovery=0;
file

正常に実行出来たこと。
[task_id]を確認します。
file

もう一つのNew Queryを開き、以下のコマンドを入力し、restoreの進度を確認します。
EXEC msdb.dbo.rds_task_status @task_id=<taskID>;

100%まで確認します。
file

2-2.確認

リフレッシュボタンを押下する。
file
データベースが正常に表示されること。
file

3.孤立ユーザーの解決

孤立ユーザー

データベース ユーザーがマスター データベースのログインに基づくが、ログインがマスターに存在しなくなったとき、SQL Server の孤立したユーザーが発生します。 これはログインが削除されたか、データベースが別のサーバーに移され、ログインがなくなったときに発生します。

3-1.孤立ユーザーの確認

[New Query]を押下して、以下のコマンドを入力し、[Execute]を押下します。
Use <データベースの名前>
EXEC sp_change_users_login ‘Report’;

UserNameのUserSIDを確認します。
file

3-2.孤立ユーザーをログインユーザーに登録します。

[New Query]を押下して、以下のコマンドを入力し、[Execute]を押下します。
CREATE LOGIN [<UserName>]
WITH PASSWORD = ‘<UserのPassword>’,
SID = <UserSID>;
file
確認
[Loginユーザー]でログインできること。
file

まとめ

これはDumpfileを利用して、オンプレミスからAWS RDSへMSSQL DBを移行する手順です。
1.RDSオプションの追加

2.DBのリストア
コマンド一覧:
①リストアコマンド:
exec msdb.dbo.rds_restore_database
@restore_db_name=’<データベースの名前>’
@s3_arn_to_restore_from=’<S3でのdumpファイルのARN>’,
@type=’full’,
@with_norecovery=0;
②リストア進捗確認コマンド:
EXEC msdb.dbo.rds_task_status @task_id=<taskID>;

3.DBユーザーをLoginユーザーへ登録
①孤立ユーザー確認コマンド:
Use <データベースの名前>
EXEC sp_change_users_login ‘Report’;
②孤立ユーザーをログインユーザーに登録するコマンド:
CREATE LOGIN [<UserName>]
WITH PASSWORD = ‘<UserのPassword>’,
SID = <UserSID>;

参考

1.インストールされてない場合は、以下のURLを参照し、Studioをインストールしてください。
https://learn.microsoft.com/ja-JP/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16
2.孤立したユーザーのトラブルシューティング (SQL Server)
https://learn.microsoft.com/ja-jp/sql/sql-server/failover-clusters/troubleshoot-orphaned-users-sql-server?view=sql-server-ver16

Last modified: 2023-05-30

Author