MySQL に生データ ファイルをバックアップするときは、コピー ファイルの整合性を確証するために、スレーブ サーバがシステム終了した状態で、レプリケーション スレーブを行います。 MySQL サーバが稼動している場合は、バックグラウンド タスクに、特に InnoDB などのバッグラウンド プロセスを伴うトレージ エンジンなどのときには、データベース ファイルを依然として更新している可能性があります。InnoDB に関しては、これらの問題はクラッシュ リカバリ中に解決するものですが、マスタ側での実行に影響を与えないこと、およびバックアップ プロセス中にスレーブ サーバのシステム終了が可能であることを基に、この利点を生かすことをお勧めします。
サーバのシステム終了とファイルのバックアップ方法
MySQL サーバをシャットダウンする。
shell> mysqladmin shutdown
データ ファイルをコピーする。cp、tar、WinZip などのユーティリティを使用してアーカイブする。
tar cf /tmp/dbbackup.tar ./data
mysqld プロセスを再度立ち上げる。
shell> mysqld_safe &
Windows の場合
C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"
通常はデータ フォルダ全体をスレーブ MySQL
サーバにバックアップします。スレーブ障害のイベントで、データをリストアしてスレーブとして使うには、スレーブのデータをバックアップするときに、master.info
および relay.info
のサーバ
ステータス ファイルをリレー ログ
ファイルとともにバックアップします。これらのファイルは、スレーブのデータをリストアした後、レプリケーションをレジューム
(再開) するときに必要になります。
リレー ログは紛失したが
relay-log.info
ファイルはまだ健在であるという場合には、そのファイルで、マスタのバイナリ
ログでSQL
スレッドがどれくらい実行されたかを調べます。そして、スレーブに起点からのバイナリ
ログを再度読み込むよう指示するために、MASTER_LOG_FILE
および MASTER_LOG_POS
オプションと
CHANGE MASTER TO
を使用します。この方法はバイナリ
ログがまだマスタ
サーバに存在している場合だけ有効です。
スレーブが LOAD DATA INFILE
ステートメントの複製に関連している場合は、スレーブが使用しているディレクトリの
SQL_LOAD-*
ファイルもバックアップしてください。そのファイルは、中断した
LOAD DATA INFILE
オペレーションのレプリケーションをレジュームするときに、スレーブが必要とします。ディレクトリの保存場所は、--slave-load-tmpdir
オプションで指定します。指定できない場合は、ディレクトリの保存場所は
tmpdir
システム変数の値です。