`
xiaofengtoo
  • 浏览: 492043 次
  • 性别: Icon_minigender_1
  • 来自: xiamen
社区版块
存档分类
最新评论

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

    博客分类:
  • DB
阅读更多

本文来自: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

 

 

 修改该行,并添加如下一些行,添加内容如下:

server-id                   = 2          //本MySQL是slave服务器
master-host             = 192.168.2.89    //master服务器的IP
master-user             = mysql           //连接master服务器的用户
master-password   = mysql123             //连接master服务器的密码
master-port              = 3306            //连接端口
master-connect-retry    = 10              //重试次数
replicate-do-db        = smp:test_mysql //同步数据库表为smp库的test_mysql表
log-slave-updates                          //同步的形式

 

修改完毕后,使用同样的方法重启一下从机的数据库。但是笔者发现重启以后,从机的MySql/home/mysql/var/ localhost.localdomain.err报出了如下的错误,并没有重启成功:

101223 20:37:01 [ERROR] Error reading packet from server: log event entry exceeded max_allowed_packet; Increase max_allowed_packet o
n master ( server_errno=1236)
101223 20:37:01 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max
_allowed_packet; Increase max_allowed_packet on master', Error_code: 1236

 

查网上资料才知,原来是两个机器的my.cnfmax_allowed_packet 配置都是1M,太小,可将其都改成16M,接着按如下顺序执行重启主从服务器:注意:我实践时发现还有点问题,请大家先不用使用该方案尝试。

注意:因为同步的是smp库的test_mysql表,所以首先需要在两个主机smp数据库中都有名为test_mysql的表,笔者用了创建了个简单的test_mysql表,参考语句如下:

create table test_mysql 
( 
    id   integer not null auto_increment,
    name varchar(32) not null,
    primary key (id)
);

 

若要测试是否成功配置,最简单的办法是在Master数据库(192.168.2.89)的该表中插入一条数据,看看是否从机的该表(192.168.2.170)也插入了对应的数据。

2.2 同步写入FTP目录文件

 2.2.1 方案描述
    在笔者的开发过程中,也遇到过这种情况:第三方接了多家平台,有些信息(例如话单信息)的写入格式都已经由这个第三方统一定义好了,需要在实时写入到指定的
FTP目录下,由他们那边的程序每隔一小时或半小时等自行抓取和删除。参考示意图如下所示:

 2.2.2 方案实现建议 
    可以让平台在本地写入同步信息(例如话单信息)时,实时触发一个或多个程序,按照第三方定义的格式写入到指定的FTP目录下。或者每隔一段时间(比对方取文件的间隔时间一样或者更短)触发程序,将话单信息写入到FTP目录下。

         对于数据量很大的情况,一般采用分小时写入文件,并有对应的小时汇总文件,告知该小时需要读取的是哪几个文件。删除文件操作一般让第三方平台取完后自行删除。

         为了以后核对数据的方便或应对异常的情况,在写入FTP目录下的文件时,最好在本地目录写入与同步给第三方的文件同样的文件内容。

2.3 自编程接收更新语句更新数据表

    2.3.1 方案描述
     该方案需要自己编写程序来来对一个或多个第三方系统的数据进行更新或插入操作。

    2.3.2 方案实现建议   

    程序设计之初,需要考虑多个问题,例如:

 1)同步表采用配置文件配置

配置哪些表触发第三方系统进行同步,需要能够灵活配置在配置文件中。

 2)触发动作可配置

为了备份方便,应该能进行多种操作。例如只写第三方库、写入第三方库时还要写入本地的备份文件中。

 3)触发程序需要灵活配置

为了应对本平台的表结构与第三方平台不一致,或需要查询一些信息后再插入或更新的情况,还需要支持在某个表的触发事件发生时,触发哪个程序能够配置指定,默认时可采用默认的程序(一般是运行语句直接插入或更新第三方系统)。

 4)第三方系统的数据库配置可配性

需要同步数据的第三方系统可以为多个,这些数据库配置信息应该可以在配置文件中灵活配置的。

 5)触发时机可配

       是每半小时、一小时还是实时触发,应该是可配置的。

3.    参考文章

1)《Mysql两个数据库之间的同步以及指定表之间的同步》:

 http://www.360doc.com/content/06/1215/18/3500_295248.shtml

2)《教你怎样在两台MySql数据库之间实现同步》

http://www.ltesting.net/html/51/n-131551.html

 

 

 

  • 大小: 44.7 KB
  • 大小: 15.8 KB
分享到:
评论

相关推荐

    第三方仓储管理系统的研究与开发.pdf

    第三方仓储管理系统(Third-Party Warehouse Management System, TPWMS)是指由第三方物流服务提供商为客户提供仓储管理服务的一种信息系统。这类系统能够帮助客户提高仓储运作效率、降低成本、提升服务质量。 ### ...

    安卓社会化分享第三方登录相关-第三方登录和获取登录后信息的案例源码.rar

    在安卓应用开发中,社会化分享和第三方登录是提高用户体验、增加用户粘性的关键特性。...在实际应用中,开发者应结合自己的需求,优化和调整这些代码,以实现最适合自己应用的第三方登录解决方案。

    成都探索成都仓储需求系列:第三方物流乘风而起,顺势而为.rar

    这份“成都探索成都仓储需求系列”的报告,旨在探讨这一现象背后的驱动因素,以及第三方物流如何通过创新和策略调整,实现与市场需求的同步增长。 首先,成都的仓储需求增长可归因于多个因素。城市化进程加快,消费...

    基于SyncML的安全数据同步SDSXS_API_英文_.pdf

    1. **加密传输**:在数据同步过程中,SDSXS_API利用加密算法对数据进行加密处理,确保即使数据在传输过程中被截获,也无法被第三方解密,从而保护数据的机密性。 2. **身份验证**:SDSXS_API引入了严格的身份验证...

    第三方缓存整合mybatis.rar

    然而,在大型应用中,为了提高系统的响应速度和减少数据库压力,通常会引入第三方缓存。本教程将讨论如何将第三方缓存如Redis或Memcached与MyBatis进行整合。 首先,我们来看一下为什么要整合第三方缓存。当一个...

    阿里云数据可视化解决方案.pdf

    1. 数据接入:阿里云数据可视化解决方案支持多源异构数据接入,包括结构化数据、半结构化数据以及非结构化数据,用户可以通过API、数据集成、数据同步等多种方式,将本地数据或者第三方数据导入到阿里云平台。...

    wherehows第三方jar包

    《WhereHows第三方JAR包详解》 在大数据管理和元数据管理领域,WhereHows是一款广泛应用的开源工具,它能够帮助用户发现、理解和探索企业内部的数据资产。在WhereHows的运行环境中,为了实现其功能,往往需要依赖一...

    数据中心建设方案.docx

    - **服务层**:通过提供标准化的服务接口,实现了数据与应用的解耦,促进了第三方开发者参与,增加了系统的灵活性和可扩展性。 - **应用层**:涵盖了多个业务应用场景,如经营分析、流量运营、客户服务等。这一层的...

    sqlserver数据仓库

    - 提供 ODBC 接口,支持第三方数据库。 #### 四、总结 SQL Server 数据仓库解决方案为企业提供了强大的数据管理和分析能力。通过对上述开发工具的详细介绍,可以看出每种工具都有其独特的优势和适用场景。企业在...

    智慧园区-VR全景招商系统解决方案.docx

    - **第三方平台对接**:与大流量第三方平台对接,实现全景展示自动同步,例如新浪微博、口碑网、携程网、百度地图、飞猪网、去哪儿网、大众点评等。 综上所述,智慧园区-VR全景招商系统解决方案通过一系列先进技术...

    工业大数据可视化整体解决方案

    同时,模块化设计和开放API使得定制化开发和第三方工具的接入变得更为便捷。 9. 教育与培训:为了确保员工能够有效利用这个解决方案,企业通常会提供相应的培训,帮助他们理解和掌握大数据分析及可视化工具的使用。...

    2021-云数据安全保护方法综述1

    安全数据审计允许客户或第三方审计员验证数据的完整性。然而,现有的审计方法在处理动态数据时效率低下,未来的研究将关注如何实现高效且实时的数据审计机制。 4. 安全数据共享:云中的数据共享面临着恶意用户和...

    顶级投行、金融估值建模培训资料-【TalkingData】探寻数据价值之路.pdf

    DataCloud支持多种数据源接入,包括内部自有数据、外部自有数据以及第三方数据等,并提供了灵活的数据接入方式,如外挂、同步等方式。 ##### 数据同步的实践 数据同步实践中包括了实时性较低但最终一致性的数据同步...

    毕业英文论文翻译原文

    这涉及到对系统架构的深入理解以及对第三方服务API的有效利用。 #### 4. **性能评估** 通过对算法在不同场景下的实验性评估,验证了其在实际应用中的可行性和效率。这包括对同步速度、资源消耗以及在高并发场景下...

    阿里云 专有云企业版 V3.8.0 智能数据构建与管理 Dataphin 用户指南 20190621.pdf

    用户只能通过阿里云官方渠道下载和使用文档,且不得泄露给第三方。此外,文档内容可能随产品升级而变动,用户需定期查看更新。 **3. 快速入门** 快速入门部分通常会指导用户如何注册、登录Dataphin,创建项目,定义...

    dotnet-Playnite视频游戏库管理器和启动器支持SteamGOG和Origin等第三方库为您的游戏提供一个统一的界面

    3. **游戏信息集成**:该软件能自动抓取游戏的元数据,如封面图片、简介和评分,从多个在线数据库中获取,如 IGDB 和 SteamDB。这些信息使得游戏库更加丰富且易于浏览。 4. **自动化功能**:Playnite支持自动安装...

    MyOffice个人资料管理系统.7z

    可以针对特定需求添加新功能,如集成更多第三方服务,或者优化界面和用户体验。源码的开放性也有利于社区共享和改进,推动软件的持续更新和完善。 五、实际应用场景 1. 工作助手:在工作中,MyOffice可以整理各种...

Global site tag (gtag.js) - Google Analytics