otter+dble实现在线数据迁移、扩容

思路

otter读取binlog中的日志信息,导入扩容后的dble中。当原库和dble中数据同步完成时切换到新的路由。

工具

前提条件

  • 源数据库是 Mysql 并开启Row模式的Binlog(中途开启不仅丢失数据,还可能导致迁移失败)
  • 数据库默认字符集为GBK、UTF8、UTF8MB4、ISO-8859-1(otter 默认数据源只支持这些)
  • 如果进行扩容,源库不能有主键修改的相关操作

环境准备

具体步骤

  1. zookeeper配置


    zookeeper管理
  2. node配置


    node管理
  3. 数据源和数据表配置


    数据源配置.png

    数据表配置.png
  4. canal配置,设置位点信息为起始位置


    canal配置.png
  5. 添加Channel


    添加Channel.png
  6. 添加Pipeline,高级设置中选择跳过ddl异常


    编辑Pipeline.png

    高级设置跳过ddl异常.png
  7. 添加映射关系


    添加映射关系.png
  8. 启动


    启动.png

注意事项

  1. 原版本dble DruidInsertParse.java :221 处理如下 插入语句会报包含主键异常,需修改以兼容otter
         insert into `xxx`(`name` , `id`) values (1 , 1) on duplicate key update `name`=values(`name`) , `id`=values(`id`)
代码修改.png
  1. 默认同步是从开启otter时binlog的当前位置开始,同步整个表需设置canal自定义位点为起始位点。
    • 在Mysql中执行show binary logs 查看初始binlog
    • 配置管理 > canal配置 > 位点自定义设置 > 位点信息: {"journalName":"mysql-bin.000001","position":0};


      binlog.png
  2. 关于全量同步还可以通过canal的自由门来实现
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,293评论 19 139
  • 入门指南 1. 简介 Quickstart会让你启动和运行一个单节点单机HBase。 2. 快速启动 – 单点HB...
    和心数据阅读 10,223评论 1 41
  • 持续的加班 重温很久以前的生活 但已不能煎熬的那般纯粹 甬长热情地联系比加班更累 开始变得不乖 以加班为由无视各种...
    孙小面阅读 2,118评论 0 0
  • 今日,在网络上看到这样一条资讯: 和大公司相比,小公司和大公司最大的不同就是钱少。钱少,犯错的机会就少。所以,对于...
    安之腾阅读 4,516评论 44 47
  • 3月8号,在自己节日的一天,我认真的写下2018年的计划,在今天之前的几天,执行过程中是有所打折的。清晨醒...
    素心向阳生阅读 1,651评论 0 0