编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

零编码打造异构数据实时同步系统——异构数据源CDC之2

wxchong 2024-08-05 01:56:47 开源技术 19 ℃ 0 评论

前言:

本篇是《异构数据源的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

    在实际测试中发现,应用于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列,如果使用这个工具,我们的工作量也是无法承载的,所以我们认为这个工具其实还有很长的路要走。

    Tags:

    本文暂时没有评论,来添加一个吧(●'◡'●)

    欢迎 发表评论:

    最近发表
    标签列表