otter同步实战
完成otter快速开始后,我们现在开始尝试验证下面两个功能
- 单表同步:将
testotter1.t_user
同步到testotter2.t_user
- 分表聚合:将
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
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、添加数据源配置、添加数据表配置,如下图
添加完成后,我们就可以添加同步链路了
# 2.1、添加channel
# 2.2、添加pipeline
# 2.3、添加映射关系
- 单表同步:将
testotter1.t_user
同步到testotter2.t_user
- 分表聚合:将
testotter1.t_user_01
和testotter1.t_user_02
同步到testotter2.t_user
# 2.4、启动channel
参考: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
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
2
3
4
5