我正在寻找一种从先前备份恢复数据库的方法。但是,备份不应简单地覆盖所有现有记录,而应仅添加当前DB与备份文件之间的差异。如果备份中没有存储“不存在的”记录,则不会发生任何事情。备份是使用mysqldump完成的。有线索吗? 提前致谢
答案 0 :(得分:10)
这是一个较少的手动答案:
mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database > database.sql
带有-t --insert-ignore --skip-opt
选项的导出命令将为您提供一个没有DROP TABLE
或CREATE TABLE
命令的sql转储文件,每个INSERT
现在都是INSERT IGNORE
BONUS:
这将以相同的方式转储单个表:
mysqldump -t --insert-ignore --skip-opt -u USER -pPASSWORD -h 127.0.0.1 database table_name > table_name.sql
我今天需要这个,并且忍不住要分享它!
答案 1 :(得分:5)
从转储文件中删除DROP TABLE
和CREATE TABLE
语句。将INSERT
语句更改为INSERT IGNORE
。然后加载备份文件,它不应更新任何重复的行。