我有一张表分布在运行MySql 4的两台服务器上。我需要将这些表合并到用于测试环境的一台服务器中。

这些表每个字面上都有数百万条记录,它们之所以位于两台服务器上是因为它们有多大。表的任何更改和分页都会给我们带来巨大的性能影响。

因为它们在生产环境中,所以我无法在其现有服务器上以任何方式对其进行更改。

问题在于主键是唯一的自动递增字段,因此存在交集。

我一直在尝试找出如何使用mysqldump命令忽略某些字段的方法,但是--disable-keys只会更改表,而不是完全摆脱键。

在这一点上,我似乎需要修改数据库结构,以将校验和或哈希作为主键的使用,这是实际上应该是唯一的两个唯一字段的组合...我真的不想做这个。

救命!

最佳答案

如果您不在乎auto_increment列的值,则只需加载第一个文件,重命名表,然后重新创建表并加载第二个文件。最后,使用

INSERT newly_created_table_name (all, columns, except, the, auto_increment, column)
       SELECT all, columns, except, the, auto_increment, column
         FROM renamed_table_name

08-04 13:47