datax官⽅⽂档_DATAX的⼀个完整实践记录
缘起:
近期⽣产系统有从其他系统获取数据进⾏功能判断的依据。基于个⼈坚持的系统之间尽量解耦的原则,果断建议了etl同步⽅式。因为之前对kettle+taskctl⽅式⽐较熟悉
mysql操作官方文档
记录:
⼀、datax安装部署
github/alibaba/DataX/blob/master/userGuid.md看这个官⽅的⽂档就⾜够了。简单说就是开箱即⽤。⾮常⽅便。注意:python版本建议2.6python在3.0版⼆、mysql到mysql的数据同步
这块分两部分介绍
1. datax的同步脚本,供学习者学习;
2. 针对我的这个业务场景的补偿机制,供参考;
{"job": {        "setting": {            "speed": {                "channel": 4,        "record":-1,        "byte":-1,        "batchSize": 2048            },            "errorLimit": {                "re 补偿机制的说明:后⾯的crontab会看到,我假设是10分钟同步⼀次的话,我的增量范围是1⼩时的变化值。这样,假设因为⽹络原因等导致任务失败,还会有5次尝试
三、shell脚本和监控:
这块看点:
1. datax的调度⽅式;
2. shell中的$?
3. ⽇志和监控建议
datax也可以对接airflow等开源调度⼯具,不过此次对我来说,就⼀个业务的两张表,因此先看看下⾯的⽅式吧。
#!/bash/binsource /etc/profileDATE=`date '+%Y-%m-%d %H:%M:%S'`echo $DATE >>/data/datax/log/logname.logpython /data/datax/bin/datax.py /data/dat 监控:因为有了较好的补偿机制,所以,此次监控和告警就战略性的后延⼀段时间。只说⽬前做了的和这块的后期监控建设思路:⽇志监控:1. datax有完整的⽇志,
四、crontab 调度
此处看点:
shell脚本可以执⾏成功,但是crontab的时候,就不⼀定了。
crontab有⼀个缺点,就是它总是不会缺省的从⽤户profile⽂件中读取环境变量参数
因此shell 脚本要添加 source /etc/profile
crontab -e # 编辑*/10 * * * * /bin/sh ***.sh >/dev/null 2>&1
五、应⽤表的调⽤设计
1. 如果同步的内容很少,则可以随便点稍微。当然最终还是要看业务的重要性和cpm等;
2. 同步的内容作为⼀个独⽴的库或者表,做⼀层缓冲层。尽可能解耦两个系统的关联,尽可能加快同步的过程。通过mq或者其他业务触
发机制,定期或者不定期的从缓冲表中获取数据到本系统中。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。