我们将我们的web服务器迁移到一个较新的服务器上。我们在做新的测试时,新旧两种都在运行。我们的客户和内部工作人员仍在生产中使用旧的,因此比一周前的新产品更新得更多,因为一周前,我们拍摄了一张快照,并进行了迁移。因此,我需要将旧服务器上的新数据迁移到新服务器上。实现这一目标的最佳方法是什么?如果我执行mysqldump并导入到新服务器,它会覆盖已经在那里的数据吗?如果是这样的话,那就好了,只是担心它会复制记录。基本上,只要把旧服务器上的所有东西都拿出来,然后当没有人在系统上时,就把它转储到新的服务器中。
发布于 2016-02-04 16:12:55
转储时,使用该选项不写入CREATE DATABASE语句。
重新加载时,在mysql命令中指定一个新的空数据库。
这将把导入的数据放在不同的数据库中。然后你可以比较它们,或者做任何事情。但是,如果计划将它们移动到旧的db名称中,则必须每次执行DROP TABLE + RENAME TABLE,才能将它们移到适当的位置。
或者,您可以将旧数据移开(drop + rename),然后加载到适当的位置。
发布于 2016-02-04 02:26:44
所以,您想要导入新数据,而不需要覆盖和没有重复的键,对吗?我不是专家,但在我看来,你可以:
mysqlimport上使用--忽略或-替换--或者不会重复行(它们要么--替换现有行,要么--忽略重复),mysqldump而不创建数据库、表和使用Insert忽略选项(--insert-ignore),因此它将插入数据并跳过重复的键,--force,在插入时跳过错误,这样如果已经插入了一行键,就不会生成错误,只需跳过它,转到下一个insert。您可以查找另一个已经回答的问题,并尝试找到最佳解决方案:这里或这里。
我尝试在mysqldump上使用--insert-ignore选项,导入时没有错误,新数据被插入时没有重复。
https://dba.stackexchange.com/questions/128192
复制相似问题