2012-03-06 8 views
1

私が取り組んでいる開発タスクをスピードアップしようとしています。私は、大規模MySQLデータベース(約5GB)にアクセスし分析するいくつかのコードを書いています。私は私のコードをテストしたいと思います。コードを変更した後、試してみる必要があります(これは、DB上でいくつかの挿入/更新/削除を行います)。それを正しく動作させるには、いくつかのコード修正が必要です。しかし、各反復の後、コードを実行する前の状態にDBを復元する必要があります。各テストの後に完全なDBのドロップ/リストアを行うのは非常に時間がかかります。これは私が今やっていることです。だから、リワインドプロセスを簡略化する方法を探しています。おそらく、データを操作したステートメント(約30秒間に実行されたステートメント)を時系列の逆順に取り消すことができるように、十分な情報をDB変更に記録します。DBの変更を巻き戻すためのMySQLツール/トリック/スクリプト

誰でももっと速い応答が可能なツールを知っていますかインクリメンタルリストア?基本的に、クエリログを逆に再生する方法はありますか?または、少なくとも、最近の変更を元に戻すために、スナップショットに対してデータ差分を実行しますか?

参考までに、InnoDBでMySQL 5.5.xを使用しています。私はRuby on Railsでコーディングしていますが、Ruby以外のコードもありますので、テストを実行する前後に実行できる言語に依存しないコマンドラインユーティリティを探しています。

+0

1つのトランザクションですべてを実行し、最後にロールバックすることはできませんか? –

答えて

1

btrfsやZFSなどのファイルシステムを使用する場合は、ファイルシステムのスナップショットを使用して状態を取得できます。データベースの内容に特別なパーティションを残しておくと、mysqldを簡単に停止することができます。スナップショットに戻ってサーバを再起動してください。

+0

+1バーチャルボックスのようなものを提案し、リンククローンを作成しようとしていましたが、それは事実上瞬間的です。インフラがどのように設定されているかによって異なります。 –

関連する問題