概要
AWS DMSを使うと、データベースをスキーマやテーブル単位でウォッチして対象のデータベースに同期させることができる。リードレプリカとは違う点は、同期対象のデータベースがリードオンリーではなく書き込み可能だという点だと思う。
DMSという名前から、データベースのマイグレーションのためのツールのように思われるかもしれないがレプリケーションツールとしても使えるようだ。
設定
- RDSの画面で同期の元DB(ソース)と同期の対象のDB(ターゲット)を作成する
- DMSの画面でタスクを作成し、元DBと同期の対象のDBを設定する、このとき同期を実行する主体としてレプリケーションインスタンスを作ることを求められるので、作る
- このとき、移行タイプを設定する必要がある、「Migrate Existing Data」か「Replicate data changes only」。前者は単純なデータ移行目的で、一発タスクを実行して移行が終わると終了、後者はレプリケーションが目的で、対象のDBを逐次同期させることができる
設定のはまりどころ
-
バイナリログの有効化
- このDMSを使うためには、データ同期元のデータベースはバイナリログが有効化されていないと駄目
- 設定は右のページを参考にする: MySQL または別の Aurora DB クラスターとのレプリケーションの設定
- 要は、Auroraの場合はパラメーターグループを画面から変更すればOKで、MySQL on RDSの場合は事前にバックアップの設定をしてからパラメーターグループを画面から変更すればOK
-
バイナリログの設定確認
sql
SELECT @@binlog_format;
-- or
SHOW variables LIKE "binlog_format";
所感
- 同期のスピードが速い、SQLツールで一方を更新すると、ほぼほぼ10秒以内で同期されている
- リードレプリカと違ってなんちゃってマスター:マスター構成でDBが組めそうだ