既存のマスターデータベースでデータのスナップショットを作成する 1 つの方法は、mysqldump ツールを使用して、複製するすべてのデータベースのダンプを作成することです。データダンプが完了したら、レプリケーションプロセスを開始する前に、このデータをスレーブにインポートします。
ここで示した例では、dbdump.db
という名前のファイルにすべてのデータベースをダンプし、レプリケーションプロセスを開始するためにスレーブ側で必要な CHANGE MASTER TO
ステートメントを自動的に加える --master-data
オプションを追加しています。
shell> mysqldump --all-databases --master-data > dbdump.db
--master-data
を使用しない場合は、個々のセッションですべてのテーブルを手動でロックしてから (FLUSH TABLES WITH READ LOCK
を使用)、mysqldump を実行し、2 番目のセッションから終了するか UNLOCK TABLES を実行するかしてロックを解除する必要があります。また、SHOW MASTER STATUS
を使用してスナップショットに一致するバイナリログ位置情報を取得し、これを使用してスレーブ起動時に対応する CHANGE MASTER TO
ステートメントを発行する必要があります。
ダンプに含めるデータベースを選択するときに、各スレーブでレプリケーションプロセスに含めないデータベースを除外する必要があることを覚えておいてください。
データをインポートするには、ダンプファイルをスレーブにコピーするか、スレーブにリモートで接続したときにマスターからファイルにアクセスします。