2009-08-18 11 views
3

rsyncを使用してサーバ上のファイルをバックアップし、mysqldumpを使用してデータベースをバックアップします。ここに私の懸念があります:mysqldumpのデータの完全性を保証する<-> rsync

私のデータベースのmysqldumpは約30秒かかります。私は、ファイルへのパスを含め、ユーザーがアップロードした画像に関する情報を保存する写真というテーブルを持っています。 mysqldumpの完了に30秒かかる間に写真がアップロードまたは削除されるとどうなるか心配です。それが起こってrsyncされたファイルとmysqldumpデータを復元すると、削除された写真を指す行を含むデータベースや、アップロードされた写真の行が見つからなくなる可能性があります。

mysqldumpがrsyncと正確に一致することを確認するにはどうすればよいですか?あなたがバックアップしているテーブルから任意の書き込み活動を阻止するために、事前に

おかげで、 ブライアン

答えて

1

使用LOCK TABLESmysqldumpが完了したら、ロックを解除します。

+1

mysqldumpの実行中にテーブルをロックするだけでは十分ではありません。また、rsyncの実行中にテーブルをロックしたままにする必要があります。そうでなければ、例えばrsyncがダンプの後に来ると、ファイルがディスク上で削除され、ダンプの主張がそこにあるはずです。まだこれらのファイルはrsyncには終わりません。 –

+0

テーブルがロックされ、ユーザーがファイルをアップロードすると、テーブルのロックが解除されるとレコードを作成するINSERTクエリが実行されますか?クエリが30秒以上待たなければならないのは悪いですか? – Brian

0

(サーバー上の)結果のmysqldumpとrsyncによって(ローカルに)転送されたMD5を比較し、2つのハッシュを比較してそれらが一致することを確認できます。 もう1つの方法は、バージョンコントロールされたファイル(gitまたはsvnまたはお気に入りのvcs)でmysqldumpを設定することです。 gitの利点は、たとえば、コミット後のフックを簡単に設定してリモートサーバに変更をプッシュできることです。アップロードはダンプ全体ではなく、バージョン間の違いだけになります。こうすることで、バックアップ期間を短縮することができます。

1

あなたはmysqldumpを完了した後、単にrsyncを実行するだけで簡単だと思います:)最悪の場合、DBダンプにはないいくつかの新しいファイルがありますが、矛盾したdbエントリはありません。

関連する問題