最近才考虑数据库迁移,想起了之前做DTS踩过的那些坑。

DTS同步binlog,开始是使用binlog event + position方式,之后追加支持了GTID。

基于数据库迁移,比如从源A库迁移到源B库,包括但不限于数据库上云。

数据库迁移方案有两种场景:

(1)、停机迁移方案

这种方案是允许停服的场景,通过mysqldump就搞定了,就不说了。

(2)、在线不停机方案

这种场景方案中,我们采用先在线整库迁移,然后在通过binlog在线DTS对齐数据。

步骤如下:

1、源数据库采用ROW模式,开启binlog权限

2、需要一个源库的全局schema查询用户,获取源数据库的schema同步到目标库

3、选取某个时间点的BINLOG OFFSET做标记,然后通过JDBC同步整个库表数据到目标库,直至完毕。

4、通过netty服务单线程读取源库BINLOG数据,从上一步标记的offset位置开始读取,读入kafka。

5、多线程消费kafka数据到目标库,直至同步到最新的binlog数据,迁移完成。

第二种方案中遇到的那些坑:

1、最好选取源库的一个只读库做为同步数据的源库,这样不影响源库线上业务

2、多线程消费kafka时,容易出现binlog顺序错乱的问题,目前采用按表写partition的方式,指定partitions消费,避免顺序错乱,但带来的新问题就是kafka的各partitions数据倾斜问题。

3、目前解析binlog同步数据时,DDL和DML操作没有特殊分别处理,如果数据量比较 大时,DDL很容易超时,导致此DDL之后同步的binlog都有问题,需要重新同步

4、同步binlog时,指定时间窗口大小,记录同步时的binlog位置到zk上,如果需要重新同步数据,可能会导致一部分binlog重复同步。如果窗口过小,zk也扛不住

5、遇到没有主键或唯一性限制的表,重复同步,会导致数据重复

6、若遇到同步blob相关类型时,若二进制数据过大,可能导致同步失败

7、同步服务的部署问题,源库和目标库都需要开公网IP。

8、同步服务的效率和源库、目标库的网络带宽,数据库配置息息相关

备注:

GTID最初由google实现,MySQL 从5.6.5 新增了基于 GTID 的复制方式。通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性,故障恢复以及容错能力。GTID (Global Transaction ID)是全局事务ID,当在主库上提交事务或者被从库应用时,可以定位和追踪每一个事务。

DTS mysql_mysql之DTS的那些事相关推荐

  1. evb android phone,dts — rk3399-evb-rev3-android-6.0.dts

    关键词:rk3399-evb-rev3-android-6.0.dts , linux-4.4, rockchip, dts dts - rk3399-evb-rev3-android-6.0.dts ...

  2. android dts的作用,DTS相关知识

    一.DTS 学习 1. kernel/arch/arm/boot/dts 目录下包含所有的dts. a. board , msm8226.dtsi b. pmic, msm-pm8226.dtsi 2 ...

  3. dts、dtb的那些事儿

    笔者最近在支持新的案子,过于忙碌,好久没更新了,勿怪. 1.设备树大变革故事 2011年3月17日的ARM Linux邮件列表有封邮件"this whole ARM thing is a f ...

  4. openwrt DTS

    openwrt DTS 相关参考 Device Tree Reference Device Tree Usage in OpenWrt 设备树简介 DTS(Device Tree) 设备树.Devic ...

  5. 视频流中的DTS、PTS到底是什么

    视频流中的DTS.PTS到底是什么 I.P.B 帧 要搞懂 DTS 和 PTS ,首先要先了解一下 I.P.B 帧. I 帧 : 帧内编码帧 又称intra picture,I 帧通常是每个 GOP( ...

  6. dtsi与dts_[dts]DTS实例分析

    此篇源文件arch/arm/boot/dts/imx6sx.dtsi 1. dts和dtsi完成的功能 以下是两段较为常见的dtsi和dts代码 1 uart5: serial@021f4000 {2 ...

  7. 开放下载!《DTS控制台入门一本通》

    简介:零基础快速入门DTS,一书在手,自学无忧,云运维工程师不可错过的匠心之作 本书图文结合,内容通俗易懂,逐层深入,重点内容详细剖析.通过作者透彻而睿智的描述,使读者在阅读本书时可以更加快速的了解到 ...

  8. Microsoft SQL Server 2000 中的数据转换服务 (DTS)

    摘自:http://www.microsoft.com/china/MSDN/library/data/sqlserver/DataTransformationServices(DTS)inMicro ...

  9. 安卓dts音频解码_DTS音效、解码、编码概念剖析

    一.什么是DTS 1.DTS是什么 我们经常看到电子产品上贴着DTS的logo,那到底什么DTS呢?其实DTS非常复杂,是一个庞大的系统,里面包括了很多子系统,主要包括声音编码.解码.音效.我们可以简 ...

最新文章

  1. 数据库索引-基本知识
  2. 谷歌浏览器 chrome 查看当前页面cookie
  3. 通过Spring Social推特StackExchange –第1部分
  4. C语言里if语句变量作为判断条件,C语言教学(九-上)if else判断语句
  5. 飞鸽传书2012 的网络通信代码
  6. Node.js「四」—— 路由 / EJS 模板引擎 / GET 和 POST
  7. Easyui Datagrid相同连续列合Demo之三
  8. abcde依次进入一个队列_数据结构与算法(6):队列
  9. 数据仓库ETL之DataX(一)简介
  10. java计算两个时间段的重合天数
  11. IDEA本地项目与SVN项目关联
  12. 丁胖胖眼中的WINDOWS操作系统(一)
  13. ERROR: role company3 does not exist
  14. 位运算和sizeof运算符
  15. Lucene中的一些基本概念
  16. Android之Camera预览
  17. 虚拟机怎样使用代理服务器上网,VMware虚拟机使用NAT模式上网的方法
  18. 二元隐函数求二阶偏导_多元函数隐函数微分 二阶偏导的求法
  19. 读取照片的Exif信息
  20. 《麻省理工学院公开课:人工智能》笔记四

热门文章

  1. 源码阅读:SDWebImage(二十一)——UIImageView+WebCache/UIImageView+HighlightedWebCache
  2. 远程连接SQL Server详细介绍
  3. 如何在IOS手机端在线倍速观看网盘视频
  4. 怎么把图片24b变成32b_艾莎公主是怎么“点水成冰”的?这篇Nature文章会给你答案...
  5. 字体在ppt中可以整体替换吗_如何在ppt2010中批量替换字体
  6. NOI Online #2 提高组 第一题:涂色游戏
  7. 这样直接运行Python命令,电脑等于“裸奔”
  8. 剑指 Offer 22. 链表中倒数第k个节点
  9. 【Unity3D日常BUG】Unity3D中导入Obi插件出现的错误:DLLNotFouindException:libOni
  10. ABAP 使用ABAP2XLSX操作EXCEL