快捷搜索:  汽车  科技

分布式存储开源方案(零编码打造异构数据实时同步系统)

分布式存储开源方案(零编码打造异构数据实时同步系统)5.gpkafka我们使用的主要问题的,在低并发的场景下,数据的同步是正常的,但是只要源端的数据更新比较频繁,这个程序就会崩溃退出,我们实际测试在update 1W条数据的时候,工具瞬间kill退出,这样的性能是无法满足我们在实际场景下的使用的,在高峰场景下,我们每秒数据更新和插入可能回到几千条,这也是我们放弃这个工具的主要原因。在实际测试中发现,应用于postgresql端的mysql_fdw经过自行代码修改和编译后,可以正常提供服务,但是在面对greenplum6(gpdb6)的时候源码编译可通过,但是在运行的时候报错,无法正常运行。下面简要说明在postgresql模式下的源码修改:#github下载的是源码,需要自行编译 #需要有mysql的client驱动,这里按postgresql说明 export PATH=/usr/local/pgsql/bin/:$PATH expor

前言:

本篇是《异构数据源的CDC实时同步系统》的续篇,继续介绍不同CDC的实际测试效果。

  • 《异构数据源的CDC实时同步系统》 系列第一篇 (已完成)
  • 《零编码打造异构数据实时同步系统——异构数据源CDC之2》系列第二篇(已完成)
  • 《零编码打造异构数据实时同步系统——异构数据源CDC之3》 系列第三篇(已完成)
  • 《零编码打造异构数据实时同步系统——异构数据源CDC之4》 系列第四篇
  • 3.mysql-fdw

    FDW是Foreign Data Wrappers的简称,中文含义为“外部数据包装器”,从postgresql9.3开始支持了读写操作,详细介绍见https://wiki.postgresql.org/wiki/Foreign_data_wrappers。这里采用的源端的fdw工具的github地址为:https://github.com/EnterpriseDB/mysql_fdw

    分布式存储开源方案(零编码打造异构数据实时同步系统)(1)

    在实际测试中发现,应用于postgresql端的mysql_fdw经过自行代码修改和编译后,可以正常提供服务,但是在面对greenplum6(gpdb6)的时候源码编译可通过,但是在运行的时候报错,无法正常运行。下面简要说明在postgresql模式下的源码修改:

    #github下载的是源码,需要自行编译 #需要有mysql的client驱动,这里按postgresql说明 export PATH=/usr/local/pgsql/bin/:$PATH export PATH=/usr/mysql/bin/:$PATH #编译安装 unzip mysql_fdw-master.zip cd mysql_fdw make USE_PGXS=1 make USE_PGXS=1 install chown postgres.postgres /usr/local/pgsql-9.6/lib/mysql_fdw.so #修改pg的配置文件,增加mysql_fdw功能 shared_preload_libraries = 'mysql_fdw' #重启pg后创建扩展 create extension mysql_fdw; #org.postgresql.util.PSQLException: ERROR: failed to load the mysql query: ln -s /usr/lib64/mysql/libmysqlclient.so.16.0.0 /usr/pgsql-9.6/lib/libmysqlclient.so #创建server CREATE SERVER mysql_server FOREIGN DATA WRAPPER mysql_fdw OPTIONS (HOST '192.168.1.111' PORT '3320'); #创建mapping CREATE USER MAPPING FOR PUBLIC SERVER mysql_server OPTIONS (username 'third_admin' password 'eisoo.com'); #建立外部测试表 CREATE FOREIGN TABLE screens ( "screenid" bigint NOT NULL "name" varchar(255) NOT NULL "hsize" int NOT NULL "vsize" int NOT NULL "templateid" bigint DEFAULT NULL "userid" bigint DEFAULT NULL "private" int NOT NULL ) SERVER mysql_server OPTIONS (dbname 'zabbix' table_name 'screens');

    4.go-mysql-postgresql

    这个工具是国内coder在go-mysql-elasticsearch的基础上进行了代码调整,开源的工具,地址在https://github.com/frainmeng/go-mysql-elasticsearch/releases,这个工具的安装和使用是比较方便的,主要是需要提前配置好go的环境,具体go环境的配置就不在这里单独说明了,大家自行搜索

    分布式存储开源方案(零编码打造异构数据实时同步系统)(2)

    我们使用的主要问题的,在低并发的场景下,数据的同步是正常的,但是只要源端的数据更新比较频繁,这个程序就会崩溃退出,我们实际测试在update 1W条数据的时候,工具瞬间kill退出,这样的性能是无法满足我们在实际场景下的使用的,在高峰场景下,我们每秒数据更新和插入可能回到几千条,这也是我们放弃这个工具的主要原因。

    5.gpkafka

    这是pivotal公司官方给出的数据同步工具,现在也有叫gpss( greenplum stream server),由于我们目的端是greenplum,开始的时候我们对这个工具抱有很大的期望,但是在实际测试过程中,发现这个工具根本没有达到商用级别,问题比较多

    分布式存储开源方案(零编码打造异构数据实时同步系统)(3)

    具体的细节就不在详述了,网上有这个工具的很多介绍和详细的配置教程,因为它仅支持insert模式,在实际场景中是完全不能满足我们要求的,另外配置是按列处理的,我们有的表的列有70-80列,如果使用这个工具,我们的工作量也是无法承载的,所以我们认为这个工具其实还有很长的路要走。

    猜您喜欢: