# 在要进行双向同步的数据库执行以下语句 (记得修改密码)(主从库都要执行)
/* 供 otter 使用, otter 需要对 retl.* 的读写权限,以及对业务表的读写权限*/
/* 1. 创建database retl */
CREATE DATABASE retl;
/* 2. 用户授权 给同步用户授权 */
/* 业务表授权,这里可以限定只授权同步业务的表 */
/* 3. 创建系统表 */
USE otter;
DROP TABLE IF EXISTS retl.retl_buffer;
DROP TABLE IF EXISTS retl.retl_mark;
DROP TABLE IF EXISTS retl.xdual;
CREATE TABLE retl_buffer
(
ID BIGINT(20) AUTO_INCREMENT,
TABLE_ID INT(11) NOT NULL,
FULL_NAME varchar(512),
TYPE CHAR(1) NOT NULL,
PK_DATA VARCHAR(256) NOT NULL,
GMT_CREATE TIMESTAMP NOT NULL,
GMT_MODIFIED TIMESTAMP NOT NULL,
CONSTRAINT RETL_BUFFER_ID PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE retl_mark
(
ID BIGINT AUTO_INCREMENT,
CHANNEL_ID INT(11),
CHANNEL_INFO varchar(128),
CONSTRAINT RETL_MARK_ID PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE xdual (
ID BIGINT(20) NOT NULL AUTO_INCREMENT,
X timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
/* 4. 插入初始化数据 */
INSERT INTO retl.xdual(id, x) VALUES (1,now()) ON DUPLICATE KEY UPDATE x = now();
# 数据库配置(主从库都要修改,请保证server-id不相同)
# 开启binlog
log-bin=mysql-bin
# 设置row模式
binlog-format=ROW
character_set_server=utf8
# 双向同步保证id不相同,避免无法辨别数据库而回环
server-id=1
# 允许外部访问
# bind-address = 0.0.0.0
# otter账号授权
授权需要双向授权 (主库)
# 如果有多个机器ip请全部授权
# 授予主从复制权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO otter@’%’;
# 授予retl 库操作权限
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `retl`.* TO otter@'ip';
# 授予操作库增删查改,alter,index权限 用于更新数据库记录
GRANT update, insert, delete, update, alter, indexON mytest.person_info TO otter@'ip';
flush PRIVILEGES;
# 授权需要双向授权 (从库)
# 如果有多个机器ip请全部授权
# 授予主从复制权限
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO otter@’%’;
# 授予retl 库操作权限
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `retl`.* TO otter@'ip';
# 授予操作库增删查改,alter,index权限 用于更新数据库记录
GRANT update, insert, delete, update, alter, indexON mytest.person_info TO otter@'ip';
flush PRIVILEGES;
# 配置数据源
尽量使用专用账号,避免重复配置数据源
同一个数据源的表只需要配置一次
点击验证,如果报字符类型不一致问题,可忽略
# 开始添加数据源

# 配置数据源
# 数据源列表

# 配置表
schema name 配置数据库名(支持正则.* 匹配整个实例下所有数据库)
table name配置表名,支持正则配置
如: .* 匹配全库
(yibai_product_map|yibai_product) 最外层一定要加括号,否则无法同步"|"后面的部分,
保证 Find schema and tables: 有你需要同步的所有表
# 开始添加数据表
# 配置数据表

# 配置canal
canal用于取binlog,
canal名字保存后不能修改,尽量做到见名知意
此处账号要有 主从复制权限
数据库地址为同步源库数据库地址
# 添加canal

# 配置canal

# canal列表 双向需要配置两个canal 分别负责读取不同库的binlog

# 支持主备切换
-主备切换配置

# 配置Channel
-开始添加Channel

-开始配置Channel

# 配置Pipeline
-进入pipeline(点击channel名称)

-添加pipeline
# 配置pipeline(主库)
- pipeline高级配置(主库)
- pipeline配置从(从库)

- pipeline高级配置(从库)

# 配置映射关系
- 点击Pipeline进入映射配置

- 映射关系配置1
选择源库和目标库
权重越大越晚执行,用于业务关联表配置
点击下一步

- 映射关系配置2
- 映射配置3

- 映射配置4
- 配置多个映射
字段映射支持配置多个表
需要表源库是相同的数据库实例
双向同步需要相同的主库,

# 到此处配置完成
- 点击启动

- 启动后检查是否异常 日志查看

- 监控查看

- pipeling监控
点击监控可以看到各个监控指标

- 监控指标

- 同步进度
