我有一个托管生产数据库的 mysql 服务器,我会定期制作它的快照,我们也可以将其用作暂存环境。
有时会发生不好的事情,例如我们从生产中删除一行(以及所有通过外键连接到它的行),并且在修复错误代码后我继续导入备份数据。
但是,作为操作的菜鸟,我不确定正确的过程是什么。
截至目前,我有一个脚本可以执行以下操作:
- 获取由键 K 索引的行(使用 mysqldump -w)
- 从表列表中获取 row_key = K 的所有行(再次使用 mysqldump -w)
- 将所有这些行插入到产品数据库中(使用 mysql )
这看起来很老套,并且在数据查找部分(例如我的数据库中“相关”表的列表不正确)和数据导入部分(例如由于数据库“分歧”而违反约束)总是存在一些不一致我必须手动修复INSERT
代码)。
有没有正确的方法来做这种事情?
我可以在 SF 上看到相关问题,例如 将数据从一个 MYSQL 数据库移动到另一个数据库, 但这似乎与合并整个数据库或导入整个备份有关,而不是恢复一小部分“自包含”数据。
不,你得到它的方式几乎就是它必须完成的方式。该问题的正确解决方案是永远不要删除数据——将其标记为不活动,或者最坏的情况是将其移至“已删除”表。审计跟踪也很有效。