合 阿里数据同步工具Otter和Canal简介
Tags: MySQL高可用主从复制双主数据同步OtterCanal跨机房阿里
具体参数详解
channel参数
- 同步一致性. ==> 基于数据库反查(根据binlog反查数据库),基于当前变更(binlog数据)。针对数据库反查,在延迟比较大时比较有效,可将最新的版本快速同步到目标,但会对源库有压力.
- 同步模式. ==> 行模式,列模式。行模式特点:如果目标库不存在记录时,执行插入。列模式主要是变更哪个字段,只会单独修改该字段,在双A同步时,为减少数据冲突,建议选择列模式。
- 是否开启数据一致性. ==> 请查看数据一致性文档:Otter数据一致性
a. 数据一致性算法
b. 一致性反查数据库延迟阀值
pipeline参数
- 并行度. ==> 查看文档:Otter调度模型,主要是并行化调度参数.(滑动窗口大小)
- 数据反查线程数. ==> 如果选择了同步一致性为反查数据库,在反查数据库时的并发线程数大小
- 数据载入线程数. ==> 在目标库执行并行载入算法时并发线程数大小
- 文件载入线程数. ==> 数据带文件同步时处理的并发线程数大小
- 主站点. ==> 双A同步中的主站点设置
- 消费批次大小. ==> 获取canal数据的batchSize参数
- 获取批次超时时间. ==> 获取canal数据的timeout参数
pipeline 高级设置
- 使用batch. ==> 是否使用jdbc batch提升效率,部分分布式数据库系统不一定支持batch协议
- 跳过load异常. ==> 比如同步时出现目标库主键冲突,开启该参数后,可跳过数据库执行异常
- 仲裁器调度模式. ==> 查看文档:Otter调度模型
- 负载均衡算法. ==> 查看文档:Otter调度模型
- 传输模式. ==> 多个node节点之间的传输方式,RPC或HTTP. HTTP主要就是使用aria2c,如果测试环境不装aria2c,可强制选择为RPC
- 记录selector日志. ==> 是否记录简单的canal抓取binlog的情况
- 记录selector详细日志. ==> 是否记录canal抓取binlog的数据详细内容
- 记录load日志. ==> 是否记录otter同步数据详细内容
- dryRun模式. ==> 只记录load日志,不执行真实同步到数据库的操作
- 支持ddl同步. ==> 是否同步ddl语句
- 是否跳过ddl异常. ==> 同步ddl出错时,是否自动跳过
- 文件重复同步对比 ==> 数据带文件同步时,是否需要对比源和目标库的文件信息,如果文件无变化,则不同步,减少网络传输量.
- 文件传输加密 ==> 基于HTTP协议传输时,对应文件数据是否需要做加密处理
- 启用公网同步 ==> 每个node节点都会定义一个外部ip信息,如果启用公网同步,同步时数据传递会依赖外部ip.
- 跳过自 由 门数据 ==> 自定义数据同步的内容
- 跳过反查无记录数据 ==> 反查记录不存在时,是否需要进行忽略处理,不建议开启.
- 启用数据表类型转化 ==> 源库和目标库的字段类型不匹配时,开启改功能,可自动进行字段类型转化
- 兼容字段新增同步 ==> 同步过程中,源库新增了一个字段(必须无默认值),而目标库还未增加,是否需要兼容处理
- 自定义同步标记 ==> 级联同步中屏蔽同步的功能.
Canal参数
- 数据源信息
单库配置: 10.20.144.34:3306;
多库合并配置: 10.20.144.34:3306,10.20.144.35:3306; (逗号分隔)
主备库配置:10.20.144.34:3306;10.20.144.34:3307; (分号分隔) - 数据库帐号
- 数据库密码
- connectionCharset ==> 获取binlog时指定的编码
- 位点自定义设置 ==> 格式:{"journalName":"","position":0,"timestamp":0};
指定位置:{"journalName":"","position":0};
指定时间:{"timestamp":0}; - 内存存储batch获取模式 ==> MEMSIZE/ITEMSIZE,前者为内存控制,后者为数量控制. 针对MEMSIZE模式的内存大小计算 = 记录数 * 记录单元大小
- 内存存储buffer记录数
- 内存存储buffer记录单元大小
- HA机制
- 心跳SQL配置 ==> 可配置对应心跳SQL,如果配置 是否启用心跳HA,当心跳SQL检测失败后,canal就会自动进行主备切换.
Node参数
- 机器名称 ==> 自定义名称,方便记忆
- 机器ip ==> 机器外部可访问的ip,不能选择127.0.0.1
- 机器端口 ==> 和manager/node之间RPC通讯的端口
- 下载端口 ==> 和node之间HTTP通讯的端口
- 外部Ip ==> node机器可以指定多IP,通过pipeline配置决定是否启用
- zookeeper集群 ==> 就近选择zookeeper集群
Zookeeper集群参数
- 集群名字 ==> 自定义名称,方便记忆
- zookeeper集群 ==> zookeeper集群机器列表,逗号分隔,最后以分号结束
主备配置参数
- group Key ==> 自定义名称,otter其他地方基于该名称进行引用
- master / slave ==> 主备库ip信息
生成了groupKey,1. 可以在数据库配置时,设置url:jdbc:mysql://groupKey=key (更改 key). 2. 在canal配置时,选择HA机制为media,可填入该groupKey进行引用