rds_dbsync数据源同步工具
一、介绍
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数据源同步工具相关推荐
- bireme数据源同步工具--debezium+kafka+bireme
1.介绍 Bireme 是一个 Greenplum / HashData 数据仓库的增量同步工具.目前支持 MySQL.PostgreSQL 和 MongoDB 数据源 官方介绍文档:https:// ...
- 异构数据源离线同步工具之DataX的安装部署
异构数据源离线同步工具之DataX的安装部署
- etl数据抽取工具_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别
什么是数据同步工具(ETL.ELT) 数据同步工具ETL或者ELT的作用是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决 ...
- DataX离线数据同步工具/平台
DataX离线数据同步工具/平台 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.SQL Server.Oracle.PostgreSQL.HDFS.Hive.O ...
- 分享改进 高性能数据同步工具(一)
题外:在博文索引中暂时列出了开源的计划一览,虫子开源的目的是希望能有更多的交流,部分软件可能小得连开源协议的认证价值都没有.不管程序有多小多简单,用心把一个完整的设计思路.实现过程以及测试结果展现给大 ...
- 阿里巴巴开源离线同步工具 DataX3.0 介绍
一. DataX3.0概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳定 ...
- 实时数仓实践(一)之数据库实时增量同步工具-CDC(Change Data Capture)
数据库实时增量同步工具-CDC(Change Data Capture) Canal 阿里巴巴B2B公司,因为业务的特性,卖家主要集中在国内,买家主要集中在国外,所以衍生出了杭州和美国异地机 房的需求 ...
- 异构数据库结构与数据同步工具dbswitch
一.背景 开源MPP数据库Greenplum是一种基于PostgreSQL的分布式数据库,其采用shared-nothing架构,其架构专门用于管理大规模分析数据仓库,Greenplum主要定位在OL ...
- 3种常见的数据库迁移同步工具对比,哪个更适合你?
文章目录 前言 一.Navicat 二.DataX 三.TurboDX 总结 前言 之前在项目中,收到一个紧急需求,要把数据从 PostgreSQL 迁移到 TiDB 中.由于时间紧任务重,来不及调研 ...
最新文章
- ajax中能不能设置编码,ajax-如何在.getJSON jQuery中设置编码
- ubuntu解决eclipse中logcat只显示level栏
- # 睡眠3秒_小儿睡眠呼吸暂停综合征
- Android拨打电话号功能
- 关于动态修改定时器的时间间隔
- 8s nfs 挂载文件_把你的树莓派家庭实验室变成一个网络文件系统 | Linux 中国
- 1.vue生命周期详解(2020.12.05)
- SD2.0大会第1天心得
- opencv23:Histogram直方图反向投影
- 个人陈述怎么写计算机专业自招,自主招生个人陈述范文
- 从PLC ,PAC ,到施耐德的自动化开放系统
- html向上无间隔滚动文字(图片)
- 晶圆封装bonding
- 分享一个实用的自媒体一键多发平台,关键是能免费用
- Linux服务器内存消耗过高解决方法
- MII接口(Media Independent Interface)
- apicloud模块和html,APICloud模块开发打包
- linux和数据库day01随堂笔记
- 随笔:使用Windows搭建AAA认证服务器
- 盖尔金圆定理及严格对角占优矩阵(SDD)
热门文章
- c语言字符串的一个简单例子,把一个字符串中的小写字母改成大写字母
- HTML <cite> 标签
- Linux 编译运行查找头文件和库的顺序
- 河北计算机科学与技术研究生,2021年河北工业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
- jdbc增删改查有哪些步骤_用Mybatis如何实现对数据库的增删改查步骤
- 计算机hub体系部件,原来如此!USB Hub接口为啥都是4个7个或10个?
- 网站数据分析四:网站用户分析
- IDEA使用Maven打包时如何去掉测试阶段
- mysql六:索引原理与慢查询优化
- ubuntu下部署mongodb以及设置允许远程连接