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