背景:一些客户反馈,增量同步数据到MaxCompute按照全天的数据做增量数据同步数据量太大,且不使用按天的增量同步数据,进行在MaxCompute上进行数据处理得出增量数据对于delete的相关数据不能做到很好的支持,在次给大家一个对增量数据同步的方案使用DTS做增量同步数据到MaxCompute,数据源为ECS上自建的mysql5.7。

一、为自建MySQL创建账号并设置

1.1登陆自建Mysql数据库

1.2创建mysql数据库中用于数据迁移/同步的账号

CREATE USER 'dtsmigration'@'%' IDENTIFIED BY 'Dts123456';

说明:

  • username:待创建的账号。
  • host:允许该账号登录的主机,如果允许该账号从任意主机登录数据库,可以使用百分号(%)。
  • password:账号的密码。

1.3对账号进行授权操作

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

说明:

  • privileges:授予该账号的操作权限,如SELECT、INSERT、UPDATE等,如果要授予该账号所有权限,则使用ALL。
  • databasename:数据库名。如果要授予该账号具备所有数据库的操作权限,则使用星号(*)。
  • tablename:表名。如果要授予该账号具备所有表的操作权限,则使用星号(*)。
  • username:待授权的账号。
  • host:允许该账号登录的主机,如果允许该账号从任意主机登录,则使用百分号(%)。
  • WITH GRANT OPTION:授予该账号使用GRANT命令的权限,该参数为可选。

如果要给账户赋予所有数据库和表的权限,并容许从任意主机登陆数据库

GRANT ALL ON *.* TO 'dtsmigration'@'%';

1.4开启并设置自建Mysql数据库binlog

到指定目录下找到该文件

a.使用vim命令,修改配置文件my.cnf中的如下参数

log_bin=mysql_bin
binlog_format=row
server_id=2 //设置大于1的整数
binlog_row_image=full //当自建MySQL的版本大于5.6时,则必须设置该项。

b.修改完成后,重启Mysql进程。

service mysqld restart

二、同步过程介绍

2.1结构初始化

DTS将源库中待同步表的结构定义信息同步至MaxCompute中,初始化时DTS会为表名增加_base后缀。例如源表为customer,那么MaxCompute中的表即为customer_base。

2.2全量数据初始化

DTS将源库中待同步表的存量数据,全部同步至MaxCompute中的目标表名_base表中(例如从源库的customer表同步至MaxCompute的customer_base表),作为后续增量同步数据的基线数据。

2.3增量数据同步

DTS在MaxCompute中创建一个增量日志表,表名为同步的目标表名_log,例如customer_log,然后将源库产生的增量数据实时同步到该表中。

三、增量同步实践

3.1购买DTS同步

3.2查看购买的DTS同步,点击配置同步链路

3.3配置对应的数据源和相应的MaxCompute项目

3.4点击授予权限的同步账号操作

3.5选择对应的增量同步数据的同步实践,并选择需要同步的表

3.6同步配置预检查

3.7查询同步的全量数据

3.8查看同步成功的增量数据分区user_log

3.9查看增量数据同步的数据

元数据的字段介绍

字段 说明
record_id 增量日志的记录id,为该日志唯一标识。
说明
- id的值唯一且递增。
- 如果增量日志的操作类型为UPDATE,那么增量更新会被拆分成两条记录,且record_id的值相同。
operation_flag 操作类型,取值:
- I:INSERT操作。
- D:DELETE操作。
- U:UPDATE操作。
utc_timestamp 操作时间戳,即binlog的时间戳(UTC 时间)。
before_flag 所有列的值是否为更新前的值,取值:Y或N。
after_flag 所有列的值是否为更新后的值,取值:Y或N。

四、根据时间点位,整合该时间点位之前的全量数据

4.1建立全量数据表

CREATE TABLE IF NOT EXISTS maxcomputeone_dev.user_all(uid BIGINT,uname STRING,deptno BIGINT,gender STRING,optime DATETIME,record_id BIGINT,operation_flag STRING,utc_timestamp BIGINT,before_flag STRING,after_flag STRING);

4.2查看增量数据最后同步的点位,最后整合全量数据到user_all

合并语句

set odps.sql.allow.fullscan=true;
insert overwrite table user_all
select uid,uname,deptno,gender,optimefrom(
select row_number() over(partition by t.uidorder by record_id desc, after_flag desc) as record_num, record_id, operation_flag, after_flag, uid, uname, deptno,gender,optimefrom(
select incr.record_id, incr.operation_flag, incr.after_flag, incr.uid, incr.uname,incr.deptno,incr.gender,incr.optimefrom user_log incrwhere utc_timestamp <= 1585107804union all
select 0 as record_id, 'I' as operation_flag, 'Y' as after_flag, base.uid, base.uname,base.deptno,base.gender,base.optimefrom user_base base) t) gt
where record_num=1 and after_flag='Y';

欢迎加入“MaxCompute开发者社区2群”,点击链接申请加入或扫描二维码
https://h5.dingtalk.com/invite-page/index.html?bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745

原文链接
本文为云栖社区原创内容,未经允许不得转载。

Mysql5.7使用DTS增量同步数据到MaxCompute相关推荐

  1. MySQL从零到一解读增量同步数据到elasticsearch canal adapter方式(binlog)实现

    本文是作者在单机上面从零到一实现增量同步MySQL数据到elasticsearch canal adapter方式(binlog)实现. 实现步骤 (1)安装MySQL (2)开启MySQL binl ...

  2. 使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux

    文章目录 一.清空控制台 1. 清空控制台 2. 修改数据 3. 监控数据 4. 数据变化 5. 索引查询 6. 预期性能评估 7. 增量同步分析 二.验证方案 2.1. 把shop索引删除 2.2. ...

  3. Kettle增量同步数据

    Kettle有几年没用过了,昨天刚好开发找我,说同步ORACLE几张表的数据到MySQL,ORACLE的数据有可能更新,可以通过时间字段,但是全量同步,当天上生产由于数据量大不一定来得及,需要提前想个 ...

  4. Clickhouse单机部署以及从mysql增量同步数据

    背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,我也搞不定,那只能找我能搞定的技术 ...

  5. clickhouse + ProxySQL 单机部署及增量同步数据

    背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,异常的笨重.故引进clickhou ...

  6. clickhouse 同步mysql_ClickHouse单机部署以及从MySQL增量同步数据

    背景: 随着数据量的上升,OLAP一直是被讨论的话题,虽然druid,kylin能够解决OLAP问题,但是druid,kylin也是需要和hadoop全家桶一起用的,异常的笨重,再说我也搞不定,那只能 ...

  7. 第02期:ClickHouse 单机部署以及从 MySQL 增量同步数据

    本期作者:邓亚运 37 互娱高级 DBA,负责公司 MySQL,Redis,Hadoop,Clickhouse 集群的管理和维护. 背景 随着数据量的上升,OLAP 一直是被讨论的话题,虽然 drui ...

  8. DTS增量/同步支持DDL迁移的说明

    DTS目前并不支持所有数据库类型时间的DDL迁移,特别是异构数据库之间的迁移.不得不承认DDL的迁移还是非常复杂的,因为这涉及到DDL的解析(DDL的过滤)及转换(库表列映射及异构数据库),详情参考D ...

  9. 两个数据库字符集不一样,如何快速增量同步数据.

    环境: DB-A 字符集:US7ASCII DB-B 字符集:ZHS16GBK 需求: 从DB-A中将一个表的中文数据通过JAVA定时任务同步到DB-B. DB-A库中表的信息如下: CREATE T ...

最新文章

  1. 设计模式之状态模式(State)摘录
  2. Datawhale组队学习周报(第021周)
  3. 腾讯云详解宕机故障:光纤挖断后的150秒
  4. db2关闭下一句sql的日志_MySQL 用户和权限管理,日志体系简介
  5. 每天一道LeetCode-----在有序的二维数组中查找某个元素
  6. 每周分享五个 PyCharm 使用技巧(一)
  7. Eclipse 插件开发 向导
  8. R语言排序 -- sort() order() rank()
  9. 契约测试:解决微服务测试的问题
  10. Linux-IPC进程间通信(day11)
  11. 快速中值滤波利用VC++和OpenCV调用其封装的动态链接库出现的错误和处理
  12. python加法运算符_python 入门之 – 基本运算符(七)
  13. OpenGL ES2 0 – Iphone开发指引
  14. SpringBoot Poi生成Excel文件时,下载的文件报错格式不正确需要修复
  15. Python自动化修改word实例
  16. 如何选择socks5免费代理地址呢?
  17. filezilla删除服务器文件,FileZilla的设置FTP服务器
  18. UltraEdit V18 注册码
  19. 几种比较有效的口才锻炼方法
  20. 星载合成孔径雷达导论——合成孔径雷达概述

热门文章

  1. python jieba词频统计英文文本_python实战,中文自然语言处理,应用jieba库来统计文本词频...
  2. 修改epo服务器 gps,epo
  3. java reflectionutils_Spring中的各种Utils(五):ReflectionUtils详解(转载)
  4. matlab zigzag算法,ZIGZAG扫描的MATLAB实现
  5. 【LeetCode笔记】240. 搜索二维矩阵II 剑指 Offer 04 二维数组中的查找(Java、指针)
  6. 【LeetCode笔记】20.有效的括号(Java、栈) 21. 合并两个有序链表(Java)
  7. android 外部内容分享到app内,外部跳转APP
  8. java string 返回匹配正则的字符串的起始位置_【Python】正则表达式
  9. 双11又来了,网友:比数学考试都难
  10. 42岁!他成为2019年最年轻中科院院士!一篇论文未发博士毕业