Otter实现mysql数据库指定多个表实时单向同步

背景

生产库接入太多应用程序,现需要搭建从库用于测试并数据分析,由于并发量大,mysql自带的主从同步存在瓶颈,主从同步延迟增大,因此通过otter的方案实现主从同步。

计划

192.168.101.244 部署otter-manager(jdk、zk、mysql、otter-manager、aria2c)
192.168.100.35 部署otter-node(jdk、aria2c 、otter-node)
192.168.101.177 生产库ehc
192.168.100.99 测试库ehc

安装jdk

安装zookeeper

安装otter manager

1.下载安装包

wget https://github.com/alibaba/otter/releases/download/otter-4.2.18/manager.deployer-4.2.18.tar.gz

2.下载数据库otter初始化脚本

wget https://raw.github.com/alibaba/otter/master/manager/deployer/src/main/resources/sql/otter-manager-schema.sql

3.导入otter初始化sql

4.创建数据库用户名和密码

CREATE USER 'otter'@'%' IDENTIFIED BY 'XXXXXXX';
GRANT ALL ON otter.* TO 'otter'@'%';
flush privileges;

5.创建otter manager目录并解压安装包


6.修改配置文件


vim otter.properties

7.启动服务,并查看日志


8.可以通过MobaXterm将服务器端口映射至本地

9.登录页面查看



默认账号密码:admin/admin

安装otter-node

1.下载otter-node

wget https://github.com/alibaba/otter/releases/download/otter-4.2.18/node.deployer-4.2.18.tar.gz

2.下载并安装aria2c

node节点进行跨机房传输时,会使用到HTTP多线程传输技术,目前主要依赖了aria2c做为其下载客户端
aria2c下载地址:https://github.com/aria2/aria2/releases
编译完成后,将对应的aria2c包加入到PATH路径即可(node和manager节点都需将编译好的aria2c保存至 /usr/local/bin)
otter node会受otter manager进行管理,所以需要预先安装otter manager
完成manager安装后,需要在manager页面为node定义配置信息,并生一个唯一id
wget https://github.com/aria2/aria2/releases/download/release-1.36.0/aria2-1.36.0.tar.gz

编译安装:
tar zxvf aria2-1.36.0.tar.gz
cd aria2-1.36.0
./configure
make
cd src
cp aria2c /usr/local/bin

3.配置zookeeper

4.配置node节点




根据创建的序列号,配置对应的nid


如法炮制,创建多个节点,并启动

开始同步服务配置

1.源库及目标库创建用户

【canal】
CREATE USER canal IDENTIFIED BY 'XXXXXXXX';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'canal'@'%';
flush privileges;
【otter】
grant all privileges on . to otter@'%' identified by 'XXXXXXXX';
flush privileges;

2.源库和目标库配置修改

vim /etc/my.cnf
开启bin log模式
log-bin=mysql-bin
binlog_format=row
如果mysql为多写模式,需要在每个写库配置自增主键的偏移量和步长,避免主键冲突,偏移量和步长根据写库数量做配置
例如myql双写模式场景下,MySQL-A配置如下
auto-increment-increment=2
auto-increment-offset=1
MySQL-B配置如下
auto-increment-increment=2
auto-increment-offset=2

3.创建数据源

源库:

目标库:

4.创建数据表配置

源库:

目的库:

报错:


由于想要同步的表较多,这边分两块加入

5.添加canal配置


6.创建channel



7.添加同步的源表和目标表

8.开启同步



posted @ 2023-02-02 15:12  海yo  阅读(467)  评论(0编辑  收藏  举报