以编程方式同步记录的想法

时间:2012-09-15 12:36:28

标签: php mysql database synchronization

我需要在本地和远程数据库之间同步记录,比如客户列表。双方的数据库具有相同的结构。我曾想过使用某种标记(日期字段,字段值的哈希/校验和......)但你会建议什么?

编辑:远程数据库在Web托管上,因此需要PHP来传输数据。

2 个答案:

答案 0 :(得分:2)

在记录上设置最后一个更改字段(日期)总是一个好主意。请记住,如果您开始同步,则必须处理冲突。

如果双方都可以插入,请为主键使用分区方案。示例:站点A从1000000000开始,站点B从2000000000开始(使这些数字足够大或者只是将主键大小除以并发站点的数量)。

粗略同步情节:

  1. 从上一个同步周期开始,从源A获取修改过的记录。
  2. 对于每条记录,请检查:
    1. 是否新插入A?然后将其插入B
    2. 是否在A中修改,但在B中没有修改:更新B
    3. 是在A和B中修改过的:解决字段级别的冲突。
  3. 从上一个同步周期开始,从源B获取修改后的记录
  4. 对于每条记录,请检查:
    1. 是否新插入B?然后将其插入A
    2. 是否在B中修改,但在A:update A
    3. 中没有修改
    4. 是否在B和A中修改:解决字段级别的冲突。

答案 1 :(得分:1)

如果您想通过代码同步两个数据库,那么您正在寻找麻烦。

首先,您需要处理自己的主键生成,因为在不同站点上插入记录时,主键可以/将是相同的。唯一的主键生成并不容易实现。

此外,您需要一些冲突解决方案。在任何一方进行的更新或删除都必须反映到另一个站点。通常,如果没有用户干预,您无法解决冲突。

我的建议:看看内置(双向)复制,原生于数据库。它会为你节省很多麻烦。