如何组合来自不同时间点的两个MySQL数据库?

时间:2011-06-30 02:26:23

标签: mysql linux

我最近切换到我的应用程序的新托管服务提供商。我的员工使用旧站点,直到新站点上线,然而,旧站点的数据库备份是在新站点上线前两天进行的。因此,在转移过程中,记录被输入旧站点数据库,而新站点没有它们(因此我的两天时间滞后)。如何合并两个数据库以反映更改?

需要注意的一些事项是,某些表可能会复制主键,并且几个表上也只有时间戳。我会做一个'差异'或类似的东西,但表格会以不同的格式转储。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这是您需要实际了解数据库架构的地方。您需要创建一个程序,该程序可以查看数据库的两个版本,识别哪些记录是共享的,哪些记录不是,哪些记录具有冲突的主键(与使用相同键更新的记录相比)。然后它需要复制更改,可能替换主键的值(包括引用重新编号的行的其他行中的值!)这不容易,并且它不是一门精确的科学 - 你将编写启发式,并期望进行一些手动维修。

下次在抓取最终备份时关闭该数据库:)

答案 1 :(得分:0)

您无需创建任何其他程序。所需的一切,用于设置从旧数据库到新数据库的复制。 旧数据库中的所有数据都将自动传输到新数据库。在此期间,您应该使用旧DB作为主要数据源。一旦所有数据都被复制到新位置,您只需要制动副本连接并将代码(或DNS指针)中的DB地址更改为新的。

1.       oldDB ===> replication ==> newDB
    R/W operations

2.       oldDB ==/= brake ==/=      newDB
                               R/W operations

MySQL Doc: 15.1.1. How to Set Up Replication