AWS DMS を使用して、SQL Server を実行している Amazon RDS DB インスタンスから移行する方法を教えてください。
最終更新日: 2020 年 12 月 4 日
AWS Database Migration Service (AWS DMS) を使用して、SQL Server を実行している Amazon Relational Database Service (Amazon RDS) DB インスタンスから移行する方法を教えてください。
簡単な説明
AWS DMS を使用して 1 つ以上の SQL Server DB インスタンスから、サポートされている任意のターゲット DB エンジンにデータを移行できます。
まず、RDS SQL Server インスタンスのマスターユーザーを使用して、データベースとテーブルを設定します。次に、AWS DMS コンソールを使用して、または AWS コマンドラインインターフェイス (AWS CLI) を使用して、ソースエンドポイントを作成します。
SQL Server が変更データキャプチャ (CDC) を使用する方法と、SQL Server DB インスタンスで継続的なレプリケーションを使用するための前提条件と要件の詳細については、「Microsoft SQL Server データベースの AWS DMS のソースとしての使用」を参照してください。
解決方法
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
AWS DMS では、継続的な変更をキャプチャするために MS-Replication と MS-CDC の 2 つの方法が用意されています。
注意: Amazon RDS は Sysadmin 権限をサポートしていないため、ソースとして SQL Server を実行する Amazon RDS インスタンスでは MS-CDC を使用する必要があります。
マスターユーザーを使用して次のコマンドを実行し、データベースレベルで MS-CDC を有効にします。
EXEC msdb.dbo.rds_cdc_enable_db 'DBName';
GO
次に、テーブルごとに次のコマンドを実行して、テーブルレベルで CDC を有効にします。
EXECUTE sys.sp_cdc_enable_table @source_schema = N'SchemaName', @source_name =N'TableName', @role_name = NULL;
GO
さらに、次のコマンドを実行して T-Log のトランザクションの保持期間を延長します。
EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 3599;
GO
SQL Server インスタンスの継続的なレプリケーションを設定する場合、変更を 1 日 (86,400 秒) 保持するように pollinginterval を設定することをお勧めします。ただし、SQL Server の一部のバージョンには既知の問題があるため、pollinginterval の値が 3,599 秒を超えると、値はデフォルトの 5 秒にリセットされます。この場合、T-Log エントリは AWS DMS が読み取る前に消去されます。この問題の影響を受けるバージョンを確認するには、Microsoft のドキュメント「 SQL Server の sys.sp_cdc_scan で「pollinginterval」パラメータを秒から時間に変換すると正しくない結果が発生します」を参照してください。
AWS DMS タスクを作成したら、移行タスクのステータスをモニタリングできます。タスクを停止し、1 時間後にタスクを再開した場合、T-Log が切り捨てられ、前述の問題のために AWS DMS に必要なログシーケンス番号 (LSN) がないため、失敗することがあります。これを防ぐには、以下の手順を実行します。
1. キャプチャジョブを停止します。
use [DBName]
exec sys.sp_cdc_stop_job;
2. AWS DMS タスクを停止し、残りのすべてのアクティビティが停止するまで待ちます。
3. DMS タスクを再開し、AWS DMS タスクのソースレイテンシーをモニタリングして同期するのを待ちます。
4. キャプチャジョブを再起動します。
use [DBName]
exec sys.sp_cdc_start_job;
関連情報
Microsoft SQL Server 固有の問題のトラブルシューティング
Migrating Microsoft SQL Server databases to the AWS Cloud (Microsoft SQL Server データベースの AWS クラウドへの移行)