cjones Asked: 2016-02-04 11:18:42 +0800 CST2016-02-04 11:18:42 +0800 CST 2016-02-04 11:18:42 +0800 CST 将 MySQL 表迁移到已经有相同表的新服务器? 772 我们将 Web 服务器迁移到更新的服务器。当我们对新的进行测试时,我们同时运行旧的和新的。我们的客户和内部员工仍在生产中使用旧版本,因此比一周前拍摄快照并进行迁移时的新版本更新。所以我需要将旧服务器上的新数据迁移到新服务器上。完成此任务的最佳方法是什么?如果我执行 mysqldump 并导入到新服务器中,它会覆盖那里已有的数据吗?如果是这样就好了,只是担心它会重复记录。基本上只是想在系统上没有人时将旧服务器上的所有内容转储到新服务器上。 mysql migration 2 个回答 Voted Edu C. 2016-02-04T18:26:44+08:002016-02-04T18:26:44+08:00 所以,你想导入新数据而不覆盖并且没有重复的键,对吧?我不是专家,但在我看来,您可以: 删除当前数据并导入整个旧数据库, 使用 --ignore 或 --replace on mysqlimport- 要么不会重复行(它们将 --replace 现有行或 --ignore 重复行), mysqldump无需创建数据库、表和使用 Insert Ignore 选项 ( --insert-ignore),因此它将插入数据并跳过重复键, 导入时使用--force,插入时跳过错误,这样如果已经有一行插入了key,就不会报错,直接跳过,进行下一次插入。 您可以查找其他已回答的问题并尝试找到最佳解决方案:此处或此处。 我尝试使用--insert-ignoremysqldump 上的选项,导入时没有错误,插入的新数据没有重复项。 Best Answer Rick James 2016-02-05T08:12:55+08:002016-02-05T08:12:55+08:00 转储时,使用不写CREATE DATABASE语句的选项。 重新加载时,在命令中指定一个新的空数据库mysql。 这会将导入的数据放在不同的数据库中。然后你可以比较它们,或者做任何事情。但是,如果您打算将它们移动到旧的数据库名称中,则必须一次执行DROP TABLE+RENAME TABLE一个表才能将它们移动到位。 或者,您可以将旧数据移开(删除 + 重命名),然后加载到位。
所以,你想导入新数据而不覆盖并且没有重复的键,对吧?我不是专家,但在我看来,您可以:
mysqlimport
- 要么不会重复行(它们将 --replace 现有行或 --ignore 重复行),mysqldump
无需创建数据库、表和使用 Insert Ignore 选项 (--insert-ignore
),因此它将插入数据并跳过重复键,--force
,插入时跳过错误,这样如果已经有一行插入了key,就不会报错,直接跳过,进行下一次插入。您可以查找其他已回答的问题并尝试找到最佳解决方案:此处或此处。
我尝试使用
--insert-ignore
mysqldump 上的选项,导入时没有错误,插入的新数据没有重复项。转储时,使用不写
CREATE DATABASE
语句的选项。重新加载时,在命令中指定一个新的空数据库
mysql
。这会将导入的数据放在不同的数据库中。然后你可以比较它们,或者做任何事情。但是,如果您打算将它们移动到旧的数据库名称中,则必须一次执行
DROP TABLE
+RENAME TABLE
一个表才能将它们移动到位。或者,您可以将旧数据移开(删除 + 重命名),然后加载到位。