一、介绍

dbsync 项目目标是围绕 PostgreSQL Greenplum ,实现易用的数据的互迁功能
github地址:https://github.com/aliyun/rds_dbsync
 
支持的功能如下:

1、MySQL -> PostgreSQL/Greenplum(binlog_minner binlog_loader)
功能:基于 MySQL binlog 解析的增量数据同步
状态:可用2、MySQL -> PostgreSQL/Greenplum mysql2pgsql
功能:以表为单位的多线程全量数据迁移
状态:可用3、PostgreSQL -> PostgreSQL pgsql2pgsql
功能:pg->pg 全量+增量数据同步
状态:可用4、PostgreSQL -> PostgreSQL/Greenplum pgsql2gp
功能:基于 PostgreSQL 逻辑日志的增量数据同步
状态:不可用

二、功能1(基于 MySQL binlog 解析的增量数据同步)

1、原理介绍

官方文档说明:https://github.com/aliyun/rds_dbsync/blob/master/doc/mysql2gp.md

1.在客户端主机(也可以部署在其他主机)上启动一个临时 PG 数据库,用于临时存放从 MySQL 拉去到的 binlog 数据2.binlog_miner 从源 MySQL 的一个 binlog 文件开始,拉取和解析 binlog 并存放到临时 PG 中3.binlog_loader 从临时 PG 中读取增量数据,并做适当的处理,最终批量写入到目标 PostgreSQL 或 Greenplum 中去

2、配置相关数据源和目标数据源

1、mysql数据源

1、数据库,create database syncdb1;
2、用户权限,需要拥有select权限和binlog拉取权限,此处使用root权限
3、同步的表(切换到syncdb1数据库),create table tb1(a int primary key, b char(10));

2、pgsql临时数据库

1、用户,create user test with password 'test';
2、数据库,create database test with owner 'test';

3、pgsql目的数据库

1、用户,create user syncdb with password 'syncdb';
2、数据库,create database syncdb with owner 'syncdb';
3、同步的表(使用syncdb用户切换到syncdb数据库),create table tb1(a int primary key, b char(10));

3、搭建步骤

1、下载和解压缩

下载地址:https://github.com/aliyun/rds_dbsync/releases
解压缩:unzip mysql2pgsql.bin.el7.20171213.zip && mv mysql2pgsql.bin.el7.20171213 mysql2pgsql

2、修改配置文件,vim bin/my.cfg

1、mysql数据源
[src.mysql]
host = "118.190.209.102"
port = "5700
user = "root"
password = "123456"
db = "syncdb1"
encodingdir = "share"
encoding = "utf8"
binlogfile = "mysql-bin.000001"
binlogfile_offset = "154"
serverid = 1292、pgsql临时数据库
[local.pgsql]
connect_string = "host=127.0.0.1 dbname=test port=5432 user=test password=test"3、pgsql目的数据库
[desc.pgsql]
connect_string = "host=118.190.209.102 dbname=syncdb port=5432 user=syncdb password=syncdb"
target_schema = "public"
ignore_copy_error_count_each_table = "0"4、需要同步的表设置
[binlogloader]
loader_table_list = "loader_table_list.txt"
load_batch = 2
load_batch_gap = 10  # load任务的间隔

3、修改配置文件,vim bin/loader_table_list.txt

tb1

4、启动同步进程

1、 启动 binlog 拉取进程

cd bin
./binlog_miner

2、 启动 binlog 写入进程

cd bin
./binlog_loader

5、过程中pgsql临时表的介绍

1、mysql数据源插入数据

insert into tb1 select 1,'a';

2、pgsql临时表数据

1、binlog_data表
test=# select * from binlog_data;id | event | tbname | new_row | old_key | flag
----+-------+--------+---------+---------+------1 |     1 | tb1    | 1|'a'   | 1       |    12、binlog_load_table_status表
test=# select * from binlog_load_table_status;id | tbname |       last_load_time       | apply_id | task_id
----+--------+----------------------------+----------+---------1 | tb1    | 2018-08-01 15:02:52.307866 |        1 |       13、binlog_miner_status
test=# select * from binlog_miner_status;id |    binlogfile    | position | binlog_data_id |        last_update
----+------------------+----------+----------------+---------------------------1 | mysql-bin.000001 |      419 |              1 | 2018-08-01 15:02:51.520234、binlog_washer_status
test=# select * from binlog_washer_status;id | b | e | count |        finish_time
----+---+---+-------+----------------------------1 | 0 | 1 |     1 | 2018-08-01 15:02:51.753591

3、pgsql目的数据库

syncdb=> select * from tb1;a |     b
---+------------1 | a 

6、存在问题和解决思路

1、数据源同步的表,发生ddl变更操作后,启动dml操作
报错

COPY failed: ERROR:  extra data after last expected column
CONTEXT:  COPY tb1, line 1: "3|'c'|3"
[loader] task 3 run faild
[binlog_loader_main] thread exit, proc exit

解决

1、调整目的数据库的表结构,和源端保持一致
2、重新启动binlog_loader进程

2、多个库中表的同步
这个工具默认是同步下面对应的库表,所以每个进程只能同步一个库

数据库:my.cfg-->[src.mysql]-->db对应的数据库
表:loader_table_list.txt对应的表

可以并发启动多个进程,每个进程分别同步一个库,最终的目标库可以保持一致,实现mysql多个库中的表同步到pgsql的一个库的一个表

3、同步表比较多和数据量比较大时,会造成性能的瓶颈

转载于:https://blog.51cto.com/11257187/2153182

rds_dbsync数据源同步工具相关推荐

  1. bireme数据源同步工具--debezium+kafka+bireme

    1.介绍 Bireme 是一个 Greenplum / HashData 数据仓库的增量同步工具.目前支持 MySQL.PostgreSQL 和 MongoDB 数据源 官方介绍文档:https:// ...

  2. 异构数据源离线同步工具之DataX的安装部署

    异构数据源离线同步工具之DataX的安装部署

  3. etl数据抽取工具_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别

    什么是数据同步工具(ETL.ELT) 数据同步工具ETL或者ELT的作用是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决 ...

  4. DataX离线数据同步工具/平台

    DataX离线数据同步工具/平台 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.SQL Server.Oracle.PostgreSQL.HDFS.Hive.O ...

  5. 分享改进 高性能数据同步工具(一)

    题外:在博文索引中暂时列出了开源的计划一览,虫子开源的目的是希望能有更多的交流,部分软件可能小得连开源协议的认证价值都没有.不管程序有多小多简单,用心把一个完整的设计思路.实现过程以及测试结果展现给大 ...

  6. 阿里巴巴开源离线同步工具 DataX3.0 介绍

    一. DataX3.0概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定 ...

  7. 实时数仓实践(一)之数据库实时增量同步工具-CDC(Change Data Capture)

    数据库实时增量同步工具-CDC(Change Data Capture) Canal 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机 房的需求 ...

  8. 异构数据库结构与数据同步工具dbswitch

    一.背景 开源MPP数据库Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,其架构专门用于管理大规模分析数据仓库,Greenplum主要定位在OL ...

  9. 3种常见的数据库迁移同步工具对比,哪个更适合你?

    文章目录 前言 一.Navicat 二.DataX 三.TurboDX 总结 前言 之前在项目中,收到一个紧急需求,要把数据从 PostgreSQL 迁移到 TiDB 中.由于时间紧任务重,来不及调研 ...

最新文章

  1. ajax中能不能设置编码,ajax-如何在.getJSON jQuery中设置编码
  2. ubuntu解决eclipse中logcat只显示level栏
  3. # 睡眠3秒_小儿睡眠呼吸暂停综合征
  4. Android拨打电话号功能
  5. 关于动态修改定时器的时间间隔
  6. 8s nfs 挂载文件_把你的树莓派家庭实验室变成一个网络文件系统 | Linux 中国
  7. 1.vue生命周期详解(2020.12.05)
  8. SD2.0大会第1天心得
  9. opencv23:Histogram直方图反向投影
  10. 个人陈述怎么写计算机专业自招,自主招生个人陈述范文
  11. 从PLC ,PAC ,到施耐德的自动化开放系统
  12. html向上无间隔滚动文字(图片)
  13. 晶圆封装bonding
  14. 分享一个实用的自媒体一键多发平台,关键是能免费用
  15. Linux服务器内存消耗过高解决方法
  16. MII接口(Media Independent Interface)
  17. apicloud模块和html,APICloud模块开发打包
  18. linux和数据库day01随堂笔记
  19. 随笔:使用Windows搭建AAA认证服务器
  20. 盖尔金圆定理及严格对角占优矩阵(SDD)

热门文章

  1. c语言字符串的一个简单例子,把一个字符串中的小写字母改成大写字母
  2. HTML <cite> 标签
  3. Linux 编译运行查找头文件和库的顺序
  4. 河北计算机科学与技术研究生,2021年河北工业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  5. jdbc增删改查有哪些步骤_用Mybatis如何实现对数据库的增删改查步骤
  6. 计算机hub体系部件,原来如此!USB Hub接口为啥都是4个7个或10个?
  7. 网站数据分析四:网站用户分析
  8. IDEA使用Maven打包时如何去掉测试阶段
  9. mysql六:索引原理与慢查询优化
  10. ubuntu下部署mongodb以及设置允许远程连接