この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
背景
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バケット名
[スケジューリング]:今すぐ
2.リストアの実施
2-1.RDSデータベースへのアクセス
SQL Server Management Studioを開きます。
[Server name]:RDSデータベースのエンドポイント
[Authentication] :SQL Server Authentication
[Login]:RDSデータベースのマスターユーザー名
[Password]:RDSデータベースのマスターパスワード
2-2.RDSデータベースへのリストア
Databasesを選択し、[New Query]を押下します。
以下のコマンドを入力し、[Execute]を押下します。
exec msdb.dbo.rds_restore_database
@restore_db_name=’<データベースの名前>’
@s3_arn_to_restore_from=’<S3でのdumpファイルのARN>’,
@type=’full’,
@with_norecovery=0;
正常に実行出来たこと。
[task_id]を確認します。
もう一つのNew Queryを開き、以下のコマンドを入力し、restoreの進度を確認します。
EXEC msdb.dbo.rds_task_status @task_id=<taskID>;
100%まで確認します。
2-2.確認
リフレッシュボタンを押下する。
データベースが正常に表示されること。
3.孤立ユーザーの解決
孤立ユーザー
データベース ユーザーがマスター データベースのログインに基づくが、ログインがマスターに存在しなくなったとき、SQL Server の孤立したユーザーが発生します。 これはログインが削除されたか、データベースが別のサーバーに移され、ログインがなくなったときに発生します。
3-1.孤立ユーザーの確認
[New Query]を押下して、以下のコマンドを入力し、[Execute]を押下します。
Use <データベースの名前>
EXEC sp_change_users_login ‘Report’;
UserNameのUserSIDを確認します。
3-2.孤立ユーザーをログインユーザーに登録します。
[New Query]を押下して、以下のコマンドを入力し、[Execute]を押下します。
CREATE LOGIN [<UserName>]
WITH PASSWORD = ‘<UserのPassword>’,
SID = <UserSID>;
確認
[Loginユーザー]でログインできること。
まとめ
これは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