2010-12-31 7 views
0

私はmySQLバックエンドを使用してWebベースのオンラインゲームを運用しています。毎日、ユーザーデータを保持する何百もの関連テーブルに対して、多くの書き込みが実行されます。mySQLデータベースデータの細部までのデータ復旧可能性

頻繁にユーザーのアカウントが侵害されます。他のユーザーデータに影響を与えることなく、攻撃前のある特定の時点にユーザーのデータを復元する機能が必要です。

私はMySQLのバイナリログを認識していますが、これまでのところ、特定の時点までのデータベース全体の復旧がわかっています。私は、より細かい解決策、つまりどのテーブル、どの行などを指定できるようにしたいと思います。 どうすればいいですか?一般的なベストプラクティスは何ですか?

+0

自分でデータリビジョンを実装することはできませんでしたか? Wikipediaのように。 – thejh

答えて

0

監査テーブルを作成して使用する場合(トリガーを使用して入力)、いつでもテーブル内の特定のユーザーのデータに戻ることができます。

一般的な復元スクリプトを作成しておく必要があります。ユーザーIDを、すでに使用しているスクリプトに入れておく方が、監査テーブルを見ながらそこに座るよりもずっと簡単です。これをもう一度やり直してください。

0

MySQL(または私が知っている他のRDBMS)は、それ自体ではできません。したがって、アプリケーション層に自分自身を実装する必要があります。

0

これは(外部モジュールなしの)不可能です。

コメント内のthejhが示唆しているように、リビジョンは良い解決策になります。 userdataを使って作業する必要がある場合は、追加のタイムスタンプなどでusertableに似たテーブルを作成し、最近変更されたuserdataをコピーするcronジョブを週/日/日に1回実行します(追加のフラグ/日付は実際のユーザーテーブル)をこのテーブルに追加します。

関連する問題