阿里实现异构数据库之间的表数据集同步
Reader & Framework & Writer
job
当然好用的框架,自然有很多优点
1)可靠的数据质量监控
2) 丰富的数据转换功能
DataX作为一个服务于大数据的ETL工具,除了提供数据快照搬迁功能之外,还提供了丰富数据转换的功能,让数据在传输过程中可以轻松完成数据脱敏,补全,过滤等数据转换功能,另外还提供了自动groovy函数,让用户自定义转换函数。详情请看DataX3的transformer详细介绍。
3) 精准的速度控制
"speed": { "channel": 5, "byte": 1048576, "record": 10000 }
4) 强劲的同步性能
DataX3.0每一种读插件都有一种或多种切分策略,都能将作业合理切分成多个Task并行执行,单机多线程执行模型可以让DataX速度随并发成线性增长。在源端和目的端性能都足够的情况下,单个作业一定可以打满网卡。另外,DataX团队对所有的已经接入的插件都做了极致的性能优化,并且做了完整的性能测试。性能测试相关详情可以参照每单个数据源的详细介绍:DataX数据源指南
5) 健壮的容错机制
6) 极简的使用体验
安装环境如下:(window下也可以)
已编译版本:
https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
源码:
git clone git@github.com:alibaba/DataX.git
怎么玩?
直接体验:进入bin目录
python datax.py 你的job配置文件路径/mysql_postgres_job.json
如果不懂这个job 文件怎么编写,可以直接看插件源码,里面有很详细的介绍。
mysql_postgres_job.json
{
"job": {
"setting": {
"speed": {
"channel": 5
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "***************",
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://192.168.5.180:3306/xxxx_cloud_20231026?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8"
],
"querySql": [
" SELECT * from sys_test_copy1"
]
}
]
}
},
"writer": {
"name": "postgresqlwriter",
"parameter": {
"username": "postgres",
"password": "***************",
"column": [
"*"
],
"preSql": [
"delete from sys_test_copy1"
],
"connection": [
{
"table": [
"sys_test_copy1"
],
"jdbcUrl": "jdbc:postgresql://192.168.5.190:5432/xxx_cloud",
}
]
}
}
}
]
}
}
小结:
之前写过关于 canal相关的数据同步,基于mysql binlog增加同步,确实很好用,但如果需要进行异构数据库间同步,则无法进行,如果有这种进行配置就可以搞定的数据同步需求,当然是最好的解决方案了