【问题标题】:mysqldump merge instead of overwritemysqldump 合并而不是覆盖
【发布时间】:2026-01-07 16:10:01
【问题描述】:

我有一个带有可以编辑的数据库副本的开发服务器和一个具有相同数据库处于不同状态的实时真实服务器。要将数据库从开发移动到我从开发服务器运行的实时:

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

【问题讨论】:

    标签: mysql version-control merge mysqldump


    【解决方案1】:

    您可以通过在管道前添加mysqldump options 来做到这一点。在您的情况下,我认为您需要 --insert-ignore、--no-create-db 和 --no-create-info。

    【讨论】: