datax异构数据库数据迁移总结
datax是开源的ETL工具,可根据需求自己做开发、实施和维护。支持多种数据库类型,可扩张性强,一张表的同步作业调起只需一行命令。笔者认为迁移的要点有二:①迁移目的表先建好,因datax做不了结构同步;②配置正确的json文件,一张表一个json文件。
datax跨数据库同步常遇到的问题包括:
1、如何实现不同数据库的数据同步?
根据数据库类型,配置job中的reader、writer。官方支持多种数据库。每一张表的同步,需要配置一个json文件。需要手动创建目的表或者分区表。
2、如何指定数据同步方式,增量、全量?
官方文档writer模块中不同数据库的默认配置参数,有的数据库类型只有一种同步当时,有的必须指定WriteMode,postgrewriter只支持insert方式入库,mysql支持insert、replace方式写入,当目的表没有主键或者其他唯一约束时,insert、replace同步数据的结果是一样的。
3、如何提高同步效率?
调参,修改json文件中的 setting channel参数;针对大表的同步,可视实际需求和可行性做分区;
4、datax是否有事务控制
datax没有事务控制,但json中的一些配置参数能用起来。比如, jobsetting中的errorlimit,是对写入的脏数据的限制,一般设置为1,即一旦产生一条脏数据,便回滚此次写入。也可以利用起writer中的preSql、postSql。preSql即在写入数据前对目的表执行sql语句操作,postSql即在写入数据后对目的表进行操作。比如,preSql设置,写入数据前清空目的表,postSql设置写入后如果记录数与源表对不上,或者时间戳字段没有更新,则清空本次作业中写入该目的表的数据等。
5、datax迁移要求目的数据库先有对应的表,如何批量在目的数据库建表?
datax是通过代码编写规则,可以用python的第三方库编写脚本,远程连接目的数据库批量建表,sqlalchemy、pymysql等第三方库都可以用起来。
posted on 2020-06-14 18:12 chenboshi 阅读(3045) 评论(5) 编辑 收藏 举报