データベース コピーの作成に mysqldump を使用すると、MySQL の別インスタンスに情報をインポートできる形式に、データベースのデータすべてを取り込むことができます。情報の形式は、SQL ステートメントであるため、緊急にデータへアクセスを必要とするイベントなどで、ファイルを簡単に分散でき、稼動しているサーバで利用できます。しかし、データ サイズが大きい場合は、mysqldump は実用的ではないことがあります。
mysqldump を使用するときには、ダンプ処理を開始する前にスレーブを停止して、ダンプ (出力) に整合データ セットが含まれていることを確認してください。
マスタの処理要求を停止する。または mysqladmin を使用して完全にスレーブを停止する。
shell> mysqladmin stop-slave
別の方法としては、レプリケーション SQL スレッドを停止してリレー ログ ファイルの処理を停止します。この方法は、バイナリ ログのデータの転送を許可します。この方法を活発なレプリケーション環境で使用すると、スレーブ処理を再開をしたときにキャッチ アップ プロセスをスピードアップする可能性があります。
shell> mysql -e 'STOP SLAVE SQL_THREAD;'
データベースをダンプするために、mysqldump を実行する。ダンプするデータベース選択するか、データベースすべてをダンプするかを決める。詳細は 項7.12. 「mysqldump — データベースバックアッププログラム」 を参照してください。データベースすべてをダンプするには、
shell> mysqldump --all-databases >fulldb.dump
ダンプが完了したら、スレーブのオペレーションを再開する。
shell> mysqladmin start-slave
上記の例示では、ログイン資格情報 (ユーザ名、パスワード) をコマンドに加え、日常、自動的に実行するスクリプトにこのプロセスをバンドルすることができます。
この方法でアプローチするときには、このバックアップの所要時間が、マスタからのイベントに対応しているスレーブの能力への影響を避けるために、スレーブのレプリケーション プロセスを監視してください。詳細は 項5.1.4.1. 「レプリケーション ステータスのチェック」を参照してください。スレーブが遅れる場合には、別のサーバを追加して、バックアップ プロセスを分散することをお勧めします。このシナリオの構成例は、項5.3.4. 「異なるデータベースから異なるスレーブへのレプリケーション」 を参照してください。