分布式存储开源方案(零编码打造异构数据实时同步系统)
分布式存储开源方案(零编码打造异构数据实时同步系统)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的实际测试效果。
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
在实际测试中发现,应用于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环境的配置就不在这里单独说明了,大家自行搜索
我们使用的主要问题的,在低并发的场景下,数据的同步是正常的,但是只要源端的数据更新比较频繁,这个程序就会崩溃退出,我们实际测试在update 1W条数据的时候,工具瞬间kill退出,这样的性能是无法满足我们在实际场景下的使用的,在高峰场景下,我们每秒数据更新和插入可能回到几千条,这也是我们放弃这个工具的主要原因。
5.gpkafka
这是pivotal公司官方给出的数据同步工具,现在也有叫gpss( greenplum stream server),由于我们目的端是greenplum,开始的时候我们对这个工具抱有很大的期望,但是在实际测试过程中,发现这个工具根本没有达到商用级别,问题比较多
具体的细节就不在详述了,网上有这个工具的很多介绍和详细的配置教程,因为它仅支持insert模式,在实际场景中是完全不能满足我们要求的,另外配置是按列处理的,我们有的表的列有70-80列,如果使用这个工具,我们的工作量也是无法承载的,所以我们认为这个工具其实还有很长的路要走。