元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • Redis

  • Nginx

  • Kafka

  • Shardingsphere

  • Otter

    • otter快速开始
    • otter同步实战
      • otter二次开发-支持分库分表
      • otter二次开发-支持按目标端主键索引Load数据
    • nexus

    • 中间件
    • Otter
    元月
    2024-03-13
    目录

    otter同步实战

    完成otter快速开始后,我们现在开始尝试验证下面两个功能

    1. 单表同步:将testotter1.t_user同步到testotter2.t_user
    2. 分表聚合:将testotter1.t_user_01和testotter1.t_user_02同步到testotter2.t_user

    otter支持三种同步方式

    1. 源:offer , 目:offer
    2. 源:offer[1-128] , 目:offer
    3. 源:offer[1-128] , 目:offer[1-128]
    4. 源:offer , 目:offer[1-128] 不支持,会报错
    
    1
    2
    3
    4

    # 一、同步前准备

    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `testotter1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `testotter2` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;
    
    CREATE TABLE testotter1.`t_user` (
      `id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `tenant_id` int NOT NULL COMMENT '租户id',
      `name` varchar(32) DEFAULT NULL COMMENT '名称',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      `update_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      KEY `idx_update_time` (`update_time`) USING BTREE,
      KEY `idx_create_time` (`create_time`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
    
    CREATE TABLE testotter1.`t_user_01` (
      `id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `tenant_id` int NOT NULL COMMENT '租户id',
      `name` varchar(32) DEFAULT NULL COMMENT '名称',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      `update_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      KEY `idx_update_time` (`update_time`) USING BTREE,
      KEY `idx_create_time` (`create_time`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
    
    CREATE TABLE testotter1.`t_user_02` (
      `id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `tenant_id` int NOT NULL COMMENT '租户id',
      `name` varchar(32) DEFAULT NULL COMMENT '名称',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      `update_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      KEY `idx_update_time` (`update_time`) USING BTREE,
      KEY `idx_create_time` (`create_time`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
    
    CREATE TABLE testotter2.`t_user` (
      `id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
      `tenant_id` int NOT NULL COMMENT '租户id',
      `name` varchar(32) DEFAULT NULL COMMENT '名称',
      `create_time` datetime DEFAULT NULL COMMENT '创建时间',
      `update_time` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      KEY `idx_update_time` (`update_time`) USING BTREE,
      KEY `idx_create_time` (`create_time`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46

    # 二、添加配置

    配置同步链路,我们需要提前完成 添加canal、添加数据源配置、添加数据表配置,如下图

    image-20240311113658134

    image-20240313211740891

    image-20240316113606497

    添加完成后,我们就可以添加同步链路了

    # 2.1、添加channel

    image-20240311113047626

    # 2.2、添加pipeline

    image-20240311113802454

    # 2.3、添加映射关系
    1. 单表同步:将testotter1.t_user同步到testotter2.t_user
    2. 分表聚合:将testotter1.t_user_01和testotter1.t_user_02同步到testotter2.t_user

    image-20240313211904488

    # 2.4、启动channel

    image-20240313212336086

    参考:Manager使用介绍 (opens new window)

    # 三、验证

    3.1、验证单表同步

    #插入测试数据
    insert into testotter1.`t_user`(name,tenant_id) values("元月1",1);
    #可以看到目标库已有数据
    select * from  testotter2.`t_user`;
    
    1
    2
    3
    4

    3.2、验证分表聚合

    #插入测试数据
    insert into testotter1.`t_user_01`(name,tenant_id) values("元月01",2);
    insert into testotter1.`t_user_02`(name,tenant_id) values("元月02",2);
    #可以看到目标库已有数据
    select * from  testotter2.`t_user`;
    
    1
    2
    3
    4
    5
    #otter#数据库
    otter快速开始
    otter二次开发-支持分库分表

    ← otter快速开始 otter二次开发-支持分库分表→

    最近更新
    01
    otter二次开发-支持按目标端主键索引Load数据
    08-03
    02
    mvnw简介
    06-21
    03
    gor流量复制工具
    06-03
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式