在MySQL中相同的数据库模式之间移动数据

时间:2010-10-04 20:31:33

标签: mysql database migration

我有2个具有相同模式的数据库。一个是用于生产/营销目的的主数据库(可能是95%的SELECT),另一个是“奴隶”,并为特定的微站点的订单,客户等运行SELECT / INSERT。

分离的原因并不是所有的微型网站都会运行相同的产品/特价/优惠券等,并且API正在开发中,但它将在一段时间内完成。

我需要将数据从slave / micro-site数据库移动到master数据库并维护关键关联。

实施例: 主数据库有#1和#2订单(在orders.id上说),我在我的微站点数据库上有几个新订单,我希望将它们迁移到主数据库,这样生产/制造就可以开始处理这些订单。 / p>

如何以最简单的方式移动数据以避免冲突/重复密钥?

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

您可以在复制过程中暂时disable foreign key checks

或者您是否需要在保持所有约束的同时复制它们?

答案 1 :(得分:0)

如果您有2个数据库,并且(自动增量)主键不应重叠,最简单的方法是设置auto_increment_increment & auto_increment_offset

站长:

auto_increment_increment = 2
autoincrement-offset = 1

复制尚未合并:

auto_increment_increment = 2
auto_increment_offset = 2

现在,所有带有自动增量键的“新近”插入的记录都将保证不会重叠。将数据从一个复制到另一个(即:使用已定义的键/ id)将只插入该ID,从而可以轻松地将“独立”数据(如订单)复制到另一个数据库。但是,如果您使用相同的主键更改数据(将产品#1从主副本复制到副本,在副本上更改产品#1,然后尝试将产品#1作为明确的方式复制回主服务器不同的产品),那么你将不得不写一个适度软化的导入脚本,它知道所有关于你的主键和&关系并重新分配。如果它是1台服务器上的2个数据库,精心设计的临时表等,可能你可以在没有太多脚本的情况下做到这一点,但是没有“火与”忘记了我所知道的开箱即用方法。