AWS DMS を使用して SQL Server を実行している Amazon RDS DB インスタンスから移行する方法を教えてください。

所要時間2分
0

AWS Database Migration Service (AWS DMS) を使用して Amazon Relational Database Service (Amazon RDS) DB インスタンスから移行しようと考えています。DB インスタンスは SQL サーバーを実行しています。

簡単な説明

まず、RDS for SQL Server インスタンスのリードユーザーを使用して、データベースとテーブルを設定します。次に、AWS DMS コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用してソースエンドポイントを作成します。詳細については、「オンプレミスまたは Amazon EC2 上の自己管理型 SQL Server のデータ変更をキャプチャする」を参照してください。

注: AWS CLI コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

解決策

データベースとテーブルを設定する

AWS DMS では、進行中の変更をキャプチャする方法として、 MS レプリケーションと MS-CDC の 2 つを利用できます。

注: Amazon RDS はシステム管理者権限をサポートしていません。このため、SQL Server をソースとして実行する Amazon RDS インスタンスは、MS-CDC を使用する必要があります。

1.    データベースレベルで MS-CDC を有効にするには、リードユーザーとして次のコマンドを実行します。

EXEC msdb.dbo.rds_cdc_enable_db 'DBName';
GO

2.    CDC をテーブルレベルで有効にするには、テーブルごとに次のコマンドを実行します。

EXECUTE sys.sp_cdc_enable_table @source_schema = N'SchemaName', @source_name =N'TableName', @role_name = NULL;
GO

3.    T ログのトランザクションの保持期間を延長するには、次のコマンドを実行します。

EXEC sys.sp_cdc_change_job @job_type = 'capture' ,@pollinginterval = 3599;
GO

SQL Server インスタンスの継続的なレプリケーションを設定する場合、変更を 1 日 (86,400 秒) 保持するようにポーリング間隔を設定することをお勧めします。指定した保持期間中は、T ログ用に十分なストレージ容量があることを確認してください。例えば、保持期間が 24 時間の場合は、キャプチャジョブの maxscansmaxtrans の値を調整します。maxtrans x maxscans は、AWS DMS がソースデータベースから毎日レプリケートする、生成されるテーブルイベントの平均数と等しくなければなりません。計算されたこの 24 時間の合計 T ログサイズを、使用可能なストレージ容量と比較し、トランザクション処理のために十分なストレージ容量があるかどうか判断します。

SQL Server の一部のバージョンには既知の問題があります。ポーリング間隔の値が 3599 秒より大きい値に設定されている場合、値はデフォルトの 5 秒にリセットされます。この場合、T ログのエントリは AWS DMS が読み取る前に消去されます。この問題について詳しくは、Microsoft のウェブサイト「KB4459220 - 修正: SQL Serverのsys.sp_cdc_scanで "pollinginterval" パラメーターを秒から時間に変換すると、正しくない結果が発生します」を参照してください。

AWS DMS タスクを作成したら、移行タスクのステータスをモニタリングします。タスクを停止して、1 時間後に再開すると、タスクが失敗する場合があります。前述の問題により、T ログが切り捨てられ、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;

ソースエンドポイントを作成する

ソースエンドポイントを作成するには、「AWS DMS を使用してソースまたはターゲットにエンドポイントを作成するにはどうすればよいですか?」の手順に従います。

関連情報

Troubleshooting issues with Microsoft SQL Server

Migrating Microsoft SQL Server databases to the AWS Cloud

Recommended settings when using Amazon RDS for SQL Server as a source for AWS DMS

AWS DMS タスクで CDC をオンにしている場合に、Amazon RDS for SQL Server ソースの T ログが満杯になる問題を解決する方法を教えてください。

AWS公式
AWS公式更新しました 8ヶ月前
コメントはありません

関連するコンテンツ