日期:2014-05-16  浏览次数:20470 次

数据同步给第三方系统的方案探索

本文来自:http://blogjava.net/amigoxie/archive/2010/12/24/341482.html

1.??? 问题提出

在需给第三方提供某些表的数据同步更新时,例如做平台的系统,需要给上层的CRM系统提供某些表的数据时,大家一般如何采取如何方案呢?另外,如果上层的系统有多家,分别用于多种用途时,应该提供何种方式让别人的数据得到同步??

2.??? 解决方案

2.1 采用数据库的同步功能

2.1.1 方案描述?
???该方案利用了各种数据库的数据同步功能,例如
MySqlSql Server等数据库都具有数据库或表同步的功能,这种情况需要在需要同步的机器上创建需要同步的表的结构。该功能也用在当我们的系统有主从数据库的情况下的数据同步问题。使用该方案的优点是:

1)不需要自己编写程序;

2)可以多个从机过来同步某些表。

使用该方案的缺点是:

1)比较依赖于数据库的功能,若两者的数据库不一样时,可能不能成功配置;

2)需要改变主数据库的服务器的配置;

3)要同步的表的结构必须完全一致。

该种方案的示意图参考如下:

?

?

?

2.1.2?方案举例
?????? MySql数据库支持数据同步,可同步其中的某些表,不过需要在第三方的数据库和需要进行同步的数据库中进行配置。

假设有两台MySQL服务器192.168.2.89192.168.2.170,两台服务器都是Linux环境下的,两台服务器的配置一样,将192.168.2.89作为Master(主)数据库,将192.168.2.170作为slave(从)数据库,此时采用单步同步的方式即可,即是Slave数据库服务器主动去Master同步数据。

首先在Master数据库(192.168.2.89)中找到my.cnf配置文件的目录(笔者这里为/etc/my.cnf),修改该文件的内容,在其后添加如下两行(第一行表示同步方式,第二行表示要同步的数据库为smp):

sql-bin-update-same
binlog-do-db=smp

?

为了使得配置生效,需要将Master数据库服务器重启一下,参考命令如下:

?

?

?

mysql.server restart

?Master数据库配置完毕以后,接着开始配置Slave数据库服务器(192.168.2.170),首先也是需要编辑/etc/my.cnf文件,找到如下行:

server-id       = 1

?