8

我正在寻找一种从以前的备份中恢复我的数据库的方法。但是,备份不应简单地覆盖所有现有记录,而应仅添加当前数据库与备份文件之间的差异。如果备份中没有存储“不存在”的记录,则不会发生任何事情。备份是使用 mysqldump 进行的。有什么线索吗?提前致谢

4

2 回答 2

18

这是一个不太手动的答案:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database > database.sql

带有选项的导出命令将为您提供一个没有或命令-t --insert-ignore --skip-opt的 sql 转储文件,现在每个都是.DROP TABLECREATE TABLEINSERTINSERT IGNORE

奖金:

这将以相同的方式转储单个表:

mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database table_name > table_name.sql

我今天需要这个,忍不住分享它!

于 2014-12-01T19:46:28.230 回答
7

从转储文件中删除DROP TABLEandCREATE TABLE语句。INSERT将语句更改为INSERT IGNORE. 然后加载备份文件,它不应该更新任何重复的行。

于 2013-06-07T00:05:54.723 回答