17.3.1.2 スレーブからローデータをバックアップする

コピーされるファイルの完全性を保証するには、MySQL レプリケーションスレーブ上のローデータファイルのバックアップが、スレーブサーバーがシャットダウンしている間に実行されるべきです。MySQL サーバーがまだ実行中の場合は、バックグラウンドタスクがデータベースファイルをまだ更新中の可能性があります (特に、InnoDB などのストレージエンジンをバックグラウンドプロセスで使用するもの)。InnoDB の場合、これらの問題はクラッシュリカバリ中に解決されるはずですが、バックアッププロセス中にマスターの実行に影響を与えずにスレーブサーバーをシャットダウンできるため、この機能を利用することは意味があります。

サーバーをシャットダウンしてファイルをバックアップするには:

  1. スレーブ MySQL サーバーをシャットダウンします。

    shell> mysqladmin shutdown
  2. データファイルをコピーします。cptarWinZip など、コピーまたはアーカイブに適したユーティリティーを使用できます。たとえば、データディレクトリが現在のディレクトリの下にある場合、ディレクトリ全体を次のようにアーカイブできます。

    shell> tar cf /tmp/dbbackup.tar ./data
  3. MySQL サーバーを再起動します。Unix の場合:

    shell> mysqld_safe &

    Windows の場合:

    C:\> "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld"

通常は、スレーブ MySQL サーバーのデータディレクトリ全体をバックアップしてください。データをリストアしてそれらをスレーブとして運用できるようにしたい場合 (たとえば、スレーブの障害時)、スレーブのデータに加えて、スレーブステータスファイル、マスター情報およびリレーログ情報リポジトリ、およびリレーログファイルもバックアップしてください。これらのファイルは、スレーブのデータをリストアしたあとにレプリケーションを再開するために必要です。

リレーログを失ったけれども 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 システム変数の値になります。


User Comments
Sign Up Login You must be logged in to post a comment.