使用datax 实现数据增量同步踩坑记录

前提概要

由于项目上需要将a服务器数据同步至b服务器,一开始使用mysql主从复制,但是由于主从同步无法触发位于b服务器的触发器,只能放弃此方案。后来找到了datax可以实现数据同步同时也可以触发触发器,决定使用此方案。

datax准备 安装datax,python,jdk  datax下载及安装地址

根据自身需求选择合适的writer和reader,我这里选择的是mysqlwriter和mysqlreader

下面是我使用的json文件,有两点需要注意

我在 where 使用了sql 语句  create_time > FROM_UNIXTIME(${create_time}) and create_time < FROM_UNIXTIME(${end_time}) ,其中FROM_UNIXTIME()是mysql时间戳转换为时间格式的函数,${name}是datax提供的占位符后面会使用到

reader中连接字符串添加了 useUnicode=true&characterEncoding=utf8 ,因为没有加这个导入到目标数据库中文乱码了,虽然我两边的数据库都是utf8mb4格式的 {

"job": {

"setting": {

"speed": {

"channel": 3

},

"errorLimit": {

"record": 0,

"percentage": 0.02

}

},

"content": [

{

"reader": {

"name": "mysqlreader",

"parameter": {

"username": "root",

"password": "root",

"where": "create_time > FROM_UNIXTIME(${create_time}) and create_time < FROM_UNIXTIME(${end_time})",

"column": [

"clue_atta_id",

"url",

"create_time",

"atta_type",

"clue_id",

"name",

"attachment_id",

"attr_sequence"

],

"connection": [

{

"table": [

"bus_clue_atta"

],

"jdbcUrl": [

"jdbc:mysql://x.x.x.x:3306/dbname"

]

}

]

}

},

"writer": {

"name": "mysqlwriter",

"parameter": {

"writeMode": "insert",

"username": "root",

"password": "root",

"column": [

"clue_atta_id",

"url",

"create_time",

"atta_type",

"clue_id",

"name",

"attachment_id",

"attr_sequence"

],

"session": [

"set session sql_mode='ANSI'"

],

"connection": [

{

"jdbcUrl": "jdbc:mysql://x.x.x.x:3306/dbname?useUnicode=true&characterEncoding=utf8",

"table": [

"bus_clue_atta"

]

}

]

}

}

}

]

}

}

shell脚本准备 因为我有多张表,编写一个脚本

需要添加source /etc/profile ,因为在cron的系统环境和shell的环境不一样,会导致 java commond not found错误  参考地址

$(date +%s) 为获取系统当前时间戳 , $(($end_time - 60)) 为算术表达式计算60前的时间戳

"-Dcreate_time=$create_time -Dend_time=$end_time"这里就是datax使用占位符的作用,可以将外部自定义参数传入

>>/home/gzjp/datax_log/bus_clue_atta_log.date +%Y%m%d 2>&1 我这里把日期都放入每天的日志文件以免单一文件过大

最后由于我的同步的表格较少我直接使用  & 进行后台操作以免发生阻塞 #!/bin/bash

source /etc/profile

# 截至时间设置为当前时间戳

end_time=$(date +%s)

# 开始时间设置为60s前时间戳

create_time=$(($end_time - 60))

/home/gzjp/datax/bin/datax.py /home/gzjp/jobs/bus_clue_atta_job.json -p "-Dcreate_time=$create_time -Dend_time=$end_time" >>/home/gzjp/datax_log/bus_clue_atta_log.`date +%Y%m%d` 2>&1 &

/home/gzjp/datax/bin/datax.py /home/gzjp/jobs/bus_clue_job.json -p "-Dcreate_time=$create_time -Dend_time=$end_time" >>/home/gzjp/datax_log/bus_clue_log.`date +%Y%m%d` 2>&1 &

/home/gzjp/datax/bin/datax.py /home/gzjp/jobs/bus_attachment.json -p "-Dcreate_time=$create_time -Dend_time=$end_time" >>/home/gzjp/datax_log/bus_attachment_log.`date +%Y%m%d` 2>&1 &

crontab 定时任务准备 $ crontab -e

*/1 * * * * /home/gzjp/jm_db_sync.sh >/dev/null 2>&1 我是定时每分钟跑一次脚本, 注意一定要处理输入文件,因为cron会见执行情况通过mail发给用户,时间长系统会被塞爆

有意义的参考内容

datax实现mysql增量同步_datax 3.0配合crontab实现数据定时增量同步相关推荐

  1. 通过Logstash实现mysql数据定时增量同步到ES

    文章目录 前言 一.系统配置 二.同步步骤整体概览 三.logstash数据同步实战 1.新建mysql表 2.ES中新建索引 3.Logstash 管道配置 4.启动Logstash 5.测试 6. ...

  2. flink实时同步mysql_基于Canal与Flink实现数据实时增量同步(一)

    点击上方蓝色字体,关注我 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB). 准备 配置 ...

  3. 同步服务老是报错_悬而未决:MYSQL配置好主从同步后没有报错,但数据一直没有同步过来是什么原因? | 学步园...

    我是用下面的步骤来配置主从数据库服务器(都是MYSQL 5.1.47)的: 1.在主服务器上FLUSH TABLES WITH READ LOCK;然后再复制数据库文件到从服务器. 2.在主服务器上创 ...

  4. u盘同步服务器文件,GoodSync配合U盘助你自动同步文件

    首页 > 新闻动态 GoodSync配合U盘助你自动同步文件 目前许多用户需要把文件带回家处理,保持单位和家里的文件同步非常重要.这里介绍一个自动同步文件的"机器人":Goo ...

  5. mysql 两个时间相差大于24小时的数据_MySQL 主从同步延迟的原因及解决办法(仅学习)...

    原文链接:https://blog.csdn.net/hao_yunfeng/article/details/82392261 Mysql主从基本原理,主要形式以及主从同步延迟原理 (读写分离)导致主 ...

  6. linux ntp时间立即同步命令_如何在 Linux 下确认 NTP 是否同步?

    我假设我你经使用上述链接设置了 NTP 服务器和 NTP 客户端.现在,如何验证 NTP 设置是否正常工作? -- Magesh Maruthamuthu(作者) NTP 意即 网络时间协议(Netw ...

  7. datax 持续数据同步_DataX数据同步

    因为选择了ElasticSearch做全文检索,需要把数据从数据库同步到es,此处选择开源方案DataX作为数据同步工具. 官方文档很详细,可以直接参考. DataXDataX 是一个异构数据源离线同 ...

  8. datax实现mysql数据同步

    前言 DataX 是阿里内部广泛使用的离线数据同步工具/平台,可以实现包括 MySQL.Oracle.HDFS.Hive.OceanBase.HBase.OTS.ODPS 等各种异构数据源之间高效的数 ...

  9. mysql增量同步kafka_MySQL数据实时增量同步到Kafka - Flume

    写在前面的话 需求,将MySQL里的数据实时增量同步到Kafka.接到活儿的时候,第一个想法就是通过读取MySQL的binlog日志,将数据写到Kafka.不过对比了一些工具,例如:Canel,Dat ...

最新文章

  1. 【Python】Scrapy爬虫实战(豆瓣电影 Top 250)
  2. API 分页探讨:offset 来分页真的有效率吗?
  3. 78、VLAN间路由配置实验之单臂路由
  4. java正则过滤js_JS/Java正则表达式验证
  5. java 拦截器和过滤器区别(转载)
  6. Druid 在小米公司部分技术实践
  7. Ruby学习笔记1 -- 基本语法和数据类型, Class
  8. oracle 数据误删除 数据恢复
  9. linux下查看计划任务,linux查看计划任务.docx
  10. 常用小样本数据集介绍与下载汇总
  11. win10 安装mysql 卡死_win10安装Mysql5.5卡住假死
  12. c语言bbs论坛管理系统,C语言编程论坛的设计与开发---论文.doc
  13. 区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!
  14. google手机等相关产品{时间不同步}最简解决方法
  15. RGBA 编码为 YUV420SP【NEON】
  16. ConvertUtils
  17. 根据MRP建议对采购订单需求日期的建议修改采购订单需求日期 (续)
  18. stm32 esp8266配网-smartConfig和BT串口方式配网
  19. AV_PIX_FMT_YUV420P与AV_PIX_FMT_YUVJ420P
  20. ArcGIS相交闭合矩形线转面

热门文章

  1. 一键开播 专业直播导播一体机——云犀BOX 4.0新品上市首发
  2. java读取web工程目录之外的图片并显示
  3. IDEA手动下载MySQL驱动并连接数据库
  4. windows2008 c盘清理
  5. 微信公众平台开发(79) 每日宜忌
  6. python scikit learn 关闭开源_scikit learn 里没有神经网络?
  7. 机器人动力学知识点总结<二>
  8. 10. 自制操作系统: risc-v Supervisor寄存器sstatus/stvec/sip/sie
  9. 视觉SLAM-手写VIO三角测量代码注释
  10. 【补充习题一】夹逼准则等求极限