質問: MySQLで構築したデータベースサーバの移設を行うため、データをコピーできるツールを探しております。本来ならレプリケーションで対応すべきところなのですが、諸般の事情でレプリケーションを使用することができません。サービスの停止時間を最小にするために次のような手順を考えました。 1.前日のデータベースダンプを新データベースサーバにリストアする 2.サービスをメンテナンスモードに移行し、データ更新を停止する 3.ダンプ移行の差分データを旧データベースサーバから新データベースサーバにコピーする 4.アプリケーションのデータベース参照先を新データベースサーバに切り替えて、メンテナスモードを解除する。 このうち、3の手順で使用する差分データコピーを行えるツールを探しています。これまでに試してみたのは次の2つです。 一つは、NaviCatです。データの同期という機能があったので試していたのですが、エラーが頻発し実用になっていません。エラーになったクエリを出力して確認したところ、データを詰め込んだ巨大なSQLを組み立てていて、MySQLが処理しきれなかったようです(巨大とはいえ、max_allowed_packetよりは小さいです)。試しにエラーになったSQLをテキストエディタで小分けにして新データベースサーバに投入したところ正常に処理できたのですが、これではメンテナンス時間がいくらあっても足りません。 もう一つは、AWS Database Migration Serviceです。しかしこちらは試してみた限りでは常にフルデータをコピーするようで、差分だけを短時間でコピーすることはできませんでした。 これらの他に、MySQLで差分データをコピーできるツールはなにかありませんでしょうか。有償無償は問いません。もしくは、 ・NaviCatでクエリを小分けにして出力する設定 ・AWS Database Migration Serviceで差分データのみをコピーする方法 でも構いません。
回答: バイナリログを吐かないならデータ毎に更新日時を記録して 前回の出力日時との差をみるくらいでしょうね