初めてDMS(AWS Database Migration Service)を一から構築したので概念などを自分用にメモしておく
構築したもの
RDS(Aurora)からRDS(Aurora)に特定のテーブルに絞って移行するフルロードタスク。
今回作成したのは単なる一度きりのフルロードタスクだが、タスクの構築の仕方によって継続的なレプリケーションを行うことができることも学んだ。
必要なリソースとその役割
- タスク
DMSの実行単位でどのようにデータをコピーするのかを定義する。 - ソースエンドポイント
コピー元のデータベースへの接続を抽象化したエンドポイント。
直接接続ではなく抽象化することで接続テストの結果管理などができる。 - ターゲットエンドポイント
コピー先のデータベースへの接続を抽象化したエンドポイント。 - レプリケーションインスタンス
タスクを実行するインスタンス。Availableな状態になっていると費用が発生する。
タスクについて
タスクの種類
- 移行のみ
- 移行と複製
- 複製のみ
を選択できる。
移行とは実行時点のコピー元のデータベースの内容をコピー先のデータベースに反映させること。
複製とは実行した後にコピー元のデータベースに行われた変更をコピー先のデータベースに随時反映させること。
「移行と複製」を選択するとその時点でのコピー元データベースの内容をコピー先データベースに反映させて、その後にコピー元のデータベースに入った変更をコピー先に反映させ続ける。
複製を行うにはコピー元のデータベースの変更を検知する必要があるため、DBMSごとに所定のログを有効化するなどの設定が必要。
ルール
タスクに対して定義することで、特定のテーブルの選択・除外、テーブル名の変更、データ範囲の限定など、移行内容の制御を行うことができる。
構築したタスクの中でも特定のスキーマ、テーブルに限定して移行を行うようなルールを作成した。
FullLoadSettings
移行タスクを行う際の設定。
ターゲットDBにすでにテーブルが存在する際にどのように対応するのかといった設定や、移行時のデータコミット単位、移行タスクが終わった後にPKを作成するか否かといった大量のデータの移行速度に影響する動作の設定を行うことができる。
replicationTaskSettings
LOBデータのような特殊なデータの扱いやパラレル実行に関する設定を行うことができる
ハマったポイント
- SECRETで生成したパスワードだとエンドポイントで利用できない文字列が含まれることがある