2009/05/04

MySQLバックアップ

MySQLの物理バックアップからの復旧で、トラブルがあったのでメモ

バックアップをレプリケーションのスレーブ(スタンバイ)側で物理バックアップを日次でとっていた。
物理バックアップなので、普段はそのままデータディレクトリに配置してMySQLを起動させれば、レプリケーションも再開されてサービス再開できるはずなのにレプリケーションを開始しようとするとエラーが発生してレプリケーションが動かなかった。

原因は、"LOAD DATA INFILE"でデータをロードする途中でレプリケーションを止めて物理バックアップを取得していて、"tmpdir"や"slave-load-tmpdir"で指定したディレクトリは、物理バックアップ対象からもれていた為、読み込み対象のファイルが無かったから、エラーが起きていた。

復旧方法は、mysqlbinlogで内容を確認してから、レプリケーションの開始位置を少し前に戻して、"LOAD DATA INFILE"を初めからやり直した。

二度とおきないようにmy.cnfにも、"slave-load-tmpdir"を指定して、バックアップ対象ディレクトリに一時データを作成するように変更した。