假设我备份这样的数据库:
mysqldump -u usrname -p pass dbname > dbbackup.sql
然后我从 dbname 中删除一堆行。
然后新行被插入到 dbname 中。但是,我决定要“取消删除”我删除的行。如何才能恢复 dbbackup 而不覆盖新行?
答案1
您能做的最好的事情就是将备份恢复到新的数据库,然后运行查询(这将取决于使用表的应用程序)来识别您想要的行并传输这些数据。
请记住,在执行此过程时要继续进行备份,以限制可能的数据丢失,并确保备份不会在进行过程中相互覆盖。
pt-table-sync 可能对你有帮助,但你需要仔细阅读,特别是关于双向同步的部分。除了同步主/从之外,我没有用过它,但据我所知,它在你的环境下很有效(如果你将备份恢复到另一个数据库)。
http://www.percona.com/doc/percona-toolkit/2.0/pt-table-sync.html
请记住,在执行任何步骤之前都要进行备份。即使是将备份恢复为另一个名称。没有什么比在当前数据库之上进行恢复更能毁掉你的一天了。
答案2
如果您需要该功能,则需要专门设计用于支持该功能的数据库模式。
在任何随机数据库上执行此操作几乎肯定会导致严重的混乱。