mysqldump を使用してデータベースのコピーを作成することで、MySQL Server の別のインスタンスに情報をインポートできる形式でデータベース内のすべてのデータを取得できます (セクション4.5.4「mysqldump — データベースバックアッププログラム」を参照してください)。情報の形式が SQL ステートメントであるため、緊急時にデータにアクセスする必要がある場合にファイルを実行中サーバーに配布して適用することも簡単にできます。ただし、データセットのサイズが非常に大きい場合は、mysqldump が実用的でない場合があります。
mysqldump を使用するときは、一貫性のあるデータセットがダンプに含まれるように、スレーブ上でレプリケーションを停止してからダンププロセスを起動してください。
-
スレーブでの要求処理を停止します。mysqladmin を使用してスレーブでのレプリケーションを完全に停止できます。
shell> mysqladmin stop-slave
イベント実行を一時停止するために、スレーブ SQL スレッドだけを停止することもできます。
shell> mysql -e 'STOP SLAVE SQL_THREAD;'
これにより、スレーブは引き続きマスターのバイナリログからデータ変更イベントを受け取り、I/O スレッドを使用してそれらをリレーログに格納できますが、スレーブはこれらのイベントを実行したりそのデータを変更したりできません。ビジーなレプリケーション環境では、バックアップ中に I/O スレッドの実行を許可することで、スレーブ SQL スレッド再起動時に追い付くプロセスの速度が向上する場合があります。
-
mysqldump を実行してデータベースをダンプします。すべてのデータベースをダンプしたり、ダンプするデータベースを選択したりできます。たとえば、すべてのデータベースをダンプするには:
shell> mysqldump --all-databases > fulldb.dump
-
ダンプが完了したら、スレーブの動作を再開します。
shell> mysqladmin start-slave
前の例では、ログイン資格証明 (ユーザー名、パスワード) をコマンドに追加したり、毎日自動的に実行できるプロセスをスクリプトにバンドルしたりすることをお勧めします。
この方法を使用する場合、スレーブレプリケーションプロセスをモニターして、バックアップの実行にかかる時間がマスターからのイベントにスレーブが追い付く能力に影響しないようにしてください。セクション17.1.5.1「レプリケーションステータスの確認」を参照してください。スレーブが追い付けない場合は、別のスレーブを追加してバックアッププロセスを分散することをお勧めします。このシナリオの構成方法の例は、セクション17.3.4「異なるデータベースを異なるスレーブに複製する」を参照してください。