0

我使用 mySQL 后端运行基于 Web 的在线游戏。每天都会针对数百个保存用户数据的相关表执行许多写入操作。

用户的帐户经常会被盗用。我希望能够在不影响任何其他用户数据的情况下将用户数据恢复到攻击前的某个时间点。

我知道 mySQL 中的二进制日志记录,但据我所知,这是整个数据库恢复到某个时间点。我想要一个更细粒度的解决方案,即能够指定哪些表、哪些行等。我应该研究什么?一般的最佳实践是什么?

4

3 回答 3

0

MySQL(或我知道的任何其他 RDBMS)本身无法做到这一点。因此,您应该在应用程序层中自己实现它。

于 2010-12-31T18:43:40.920 回答
0

这是(没有外部模块)不可能的。

正如评论中建议的那样,修订将是一个很好的解决方案。当您只需要使用用户数据时,请创建一个类似于带有附加时间戳或类似的用户表的表,并每周/每天/..运行一次 cron 作业,以复制最近修改的用户数据(附加标志/日期在实际用户表)到这个表中。

于 2010-12-31T18:58:00.187 回答
0

如果您创建和使用审计表(通过触发器填充),您始终可以返回任何表中某个特定用户的数据。

不过,请务必在需要之前编写通用还原脚本。将用户 ID 放入您已经可用的脚本中比坐在那里查看审计表要容易得多,我该如何再次执行此操作。

于 2010-12-31T19:34:03.840 回答