美文网首页
otter+dble实现在线数据迁移、扩容

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

作者: 七胡萝北 | 来源:发表于2018-06-01 16:51 被阅读0次

思路

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的自由门来实现

相关文章

网友评论

      本文标题:otter+dble实现在线数据迁移、扩容

      本文链接:https://www.haomeiwen.com/subject/tmgwjftx.html