6.DMSタスク開始前に行っておく設定について
[mysqld] server_id=1 log-bin=/var/lib/mysql/mysql-bin binlog_format=row expire_logs_days=1 binlog_checksum=none binlog_row_image=full
ソースDBの設定ファイル(my.cnf)を開きバイナリログの設定を行います。EC2にSSH接続しMySQLの設定ファイルを編集したら、MySQLを再起動します。
# バイナリログの保存期間をデフォルトのnullから24時間に設定する # mysql -u root -p -h md5reverse.@@@@@@@@@@@@.ap-northeast-1.rds.amazonaws.com > call mysql.rds_set_configuration('binlog retention hours', 24);
RDS側のバイナリログの設定を行います。
参考:MySQL データベースを AWS Database Migration Service のソースとして使用する場合の前提条件
mysqldump -u root -p -d md5reverse > md5reverse_def.sql mysql -u root -p -h md5reverse.@@@@@@@@@@@@.ap-northeast-1.rds.amazonaws.com md5reverse < md5reverse_def.sql
EC2にSSH接続してソースDBからターゲットDBに対してスキーマ情報の移行を行います。-dオプションでデータベースの定義情報のみのダンプを取得しRDS側に投入します。
7.DMSタスクを開始する
ずいぶんと長くなりましたがこれで後はDMSタスクを開始するだけとなりました。タスクを選択して「開始/再開」ボタンをクリックします。
タスクが開始されるとまずはデータの移行が行われます。全てのデータ移行が完了するとステータスがレプリケーション進行中となり、以降はレプリケーションタスクとして変更データをキャプチャしたタイミングでレプリケートされるようになります。この画面MySQLの変更データが件数ベースで見れて楽しいと思います。
データ移行が完了した後にRDSに接続し、テーブルに設定されているINDEXとAUTO_INCREMENTが消えていないことを確認します。
8.まとめ
EC2(MySQL)→RDS(MySQL)の移行手順は以上となります。同じデータベース間の移行の場合はAWSスキーマ変換ツールを使用しなくても、今回のような手順でデータ移行およびレプリケーションが行えることが確認できました。
あとはデータ移行が完了しソースDBとターゲットDBのデータが同一となった後に、きりのいいタイミングでソースDBのサービス停止、repl_userの削除、DMSインスタンスとエンドポイントとタスクの削除、EC2内のWebアプリケーションのDB接続先をRDSに変更、などの対応を行うことでデータベースをRDS側で運用することが出来ます。
なお、RDSは最小のインスタンスでもそれなりに費用が掛かるので今回は手順の作成のみとし、記事作成後に構築した内容は全て元の状態に戻しました。