mysqldump合并而不是覆盖

时间:2012-11-14 19:03:37

标签: mysql version-control merge mysqldump

我有一个开发服务器,其中包含可以编辑的数据库副本和具有不同状态的同一数据库的实时真实服务器。要将数据库从dev移动到live,我从dev服务器运行:

mysqldump -u root -p --opt db_name tbl_name | mysql -u user_name -p --host=live_IP -C db_name

使用db_name,tbl_name,user_name和live_IP中的相应值。但是,这会将当前服务器上的表格删除并复制开发版本 - 有效地覆盖所有内容并将实时表中的任何新数据丢弃。我真正想要的是在开发服务器中有新行,并且冲突行来自开发服务器的副本,但实时服务器副本中的任何新行保持不变。这是某种合并,我无法在文档中找到任何类似的内容,但它似乎应该是可能的,因为它是一个常见的需求。

1 个答案:

答案 0 :(得分:7)

您可以通过在管道前添加mysqldump options来完成此操作。在你的情况下,我认为你想要--insert-ignore, - no-create-db和--no-create-info。