mysql 2182_MySQL 同步之otter+canal

本文详细介绍了如何配置MySQL的同步工具Otter和Canal。内容包括Otter的架构组件解析,如Pipeline、Channel和DataMediaPair,以及MySQL的Binlog开启和授权设置。接着,文章详述了Zookeeper的部署、Otter Manager和Node的安装与配置,最后讲解了Canal的配置和启动,以及同步任务的创建步骤。
摘要由CSDN通过智能技术生成

#otter总体架构

d109bc621a429b97ca8b4ae11a33d6a9.png

一些术语:

Pipeline:从源端到目标端的整个过程描述,主要由一些同步映射过程组成

Channel:同步通道,单向同步中一个Pipeline组成,在双向同步中有两个Pipeline组成

DataMediaPair:根据业务表定义映射关系,比如源表和目标表,字段映射,字段组等

DataMedia : 抽象的数据介质概念,可以理解为数据表/mq队列定义

DataMediaSource : 抽象的数据介质源信息,补充描述DateMedia

ColumnPair : 定义字段映射关系

ColumnGroup : 定义字段映射组

Node : 处理同步过程的工作节点,对应一个jvm

他们之间的关系为:

a2e72ac5b4b0f0cb65599d6174f3b941.png

#安装jdk 1.8

步骤省略#MySQL参数优化

对于自建 MySQL , 需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下

[mysqld]

log-bin=mysql-bin #开启 binlog

binlog-format=ROW #选择 ROW 模式

server_id=1 #配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

注意:针对阿里云 RDSforMySQL , 默认打开了 binlog ,

并且账号默认具有 binlog dump 权限 , 不需要任何权限或者 binlog 设置,可以直接跳过这一步

授权 canal 链接 MySQL 账号具有作为 MySQL slave 的权限, 如果已有账户可直接 grant

CREATE USER canal IDENTIFIED BY'canal';

GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON*.* TO 'canal'@'%';-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%';

FLUSH PRIVILEGES;#安装 aria2

yum install aria2 -yum#zookeeper 部署

下载地址 https://zookeeper.apache.org/releases.html

禁用防火墙和SELinux

systemctl stop firewalld.service

systemctl disable firewalld.service

setenforce 0

sed-i 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config

解压压缩包

tar-xvf apache-zookeeper-3.5.8-bin.tar.gz

移动至/opt目录下

mv apache-zookeeper-3.5.8-bin /opt/zookeeper

修改配置文件,所有机器配置文件保持一致

cat< /opt/zookeeper/conf/zoo.cfg

tickTime=2000initLimit=10syncLimit=5dataDir= /data/zookeeper/data

dataLogDir= /data/zookeeper/log

clientPort=2182EOF

配置文件注意事项:

clientPort=2182后面不能有空格

不然,就会出现报错: Address unresolved: server.0=10.10.10.62:2888:3888新建数据目录

mkdir/data/zookeeper/{data,log} -p

添加到环境变量

export ZK_HOME=/opt/zookeeper

export PATH=$PATH:$ZK_HOME/bin

source/etc/profile

启动

zkServer.sh start

使用status查看运行情况

zkServer.sh status

测试zookeeper

zkCli.sh-server 10.10.10.62:2182

#otter 安装

下载地址 https://github.com/alibaba/otter/releases

分别解压到/usr/local/otter/node 和 /usr/local/otter/manager 目录

mkdir/usr/local/otter/{manager,node} -p

tar-xvf manager.deployer-4.2.18.tar.gz -C /usr/local/otter/manager/tar-xvf node.deployer-4.2.18.tar.gz -C /usr/local/otter/node/初始化otter manager系统表:

下载源码包otter-otter-4.2.18.zip

SQL文件所在目录为 otter-otter-4.2.18/manager/deployer/src/main/resources/sql/配置修改/usr/local/otter/manager/conf/otter.properties#修改为所在服务器的ip,而不是默认的127.0.0.1## otter manager domain name

otter.domainName = 10.10.10.62

## otter manager http port

otter.port = 8090

## jetty web config xml

otter.jetty =jetty.xml#修改为正确数据库的地址,端口号,账号,密码

otter.database.driver.url = jdbc:mysql://10.10.10.62:3306/otter

otter.database.driver.username=root

otter.database.driver.password=hello#修改为zk地址## default zookeeper address

otter.zookeeper.cluster.default = 10.10.10.62:2182启动manager/usr/local/otter/manager/bin/startup.sh

查看日志

tail-fn 100 /usr/local/otter/manager/logs/manager.log

访问地址

http://10.10.10.62:8090/配置zookeeper

d0572a4ae4ca775659aa546cbdc03647.png

注意:ZooKeeper集群填写的时候,必须以分号结束#node配置

cd /usr/local/otter/node/conf

echo1 >nid

node配置文件/usr/local/otter/node/conf/otter.properties 可以默认,不用做任何修改

启动node/usr/local/otter/node/bin/startup.sh

查看日志

tail-fn 100 /usr/local/otter/node/logs/node/node.log

配置node

4aa0ab3e8c064e935dfbd2e74a6a21fd.png

机器添加完成以后,机器管理的列表中第一列就是nid(这个就是到时候要保存到/usr/local/otter/node/conf/nid 文件中的值),如下:

98d413c27254d007337275049333352f.png

manager/node都启动之后,就可以真正开始配置同步任务了。#安装canal

下载 canal 地址:https://github.com/alibaba/canal/releases

解压缩

mkdir/usr/local/canal

tar zxvf canal.deployer-1.1.5-SNAPSHOT.tar.gz -C /usr/local/canal

配置修改

vi/usr/local/canal/conf/example/instance.properties## mysql serverId

canal.instance.mysql.slaveId = 1234

#position info,需要改成自己的数据库信息

canal.instance.master.address = 127.0.0.1:3306canal.instance.master.journal.name=canal.instance.master.position=canal.instance.master.timestamp=

#canal.instance.standby.address =#canal.instance.standby.journal.name =#canal.instance.standby.position =#canal.instance.standby.timestamp =#username/password,需要改成自己的数据库信息

canal.instance.dbUsername =canal

canal.instance.dbPassword=canal

canal.instance.defaultDatabaseName=canal.instance.connectionCharset= UTF-8

#table regex

canal.instance.filter.regex = .\*\\\\..\*canal.instance.connectionCharset 代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1如果系统是1个 cpu,需要将 canal.instance.parser.parallel 设置为 false

启动

sh/usr/local/canal/bin/startup.sh

查看 server 日志

tail-fn 100 /usr/local/canal/logs/canal/canal.log

查看 instance 的日志

tail-fn 100 /usr/local/canal/logs/example/example.log

关闭

sh/usr/local/canal/bin/stop.sh

添加canal

9c1bdfc13cb785730b4cb05fb6267391.png

c58666ea5f34e19d1a02e89331d6e51d.png

配置位点信息

点位可以通过在主库执行 show master status 和 select unix_timestamp() 得到。

e15cb0318c178d14bd53b1962070bc8a.png

数据源配置

c91067cae0171e256017439796369ff0.png

e9eb58ed03c49b74551f309ba7f00d2d.png

26ce8620bc82a2b422f6985284d53d03.png

数据表配置

d65b96254bf2d8d0261cc8783a564f35.png

37ba772f5e76b8169f65fd292ad75984.png

配置channel

4a1b33c488cfb5127644ab0e59733c1a.png

af0df8a93f177bab5e8255695b117db5.png

配置Pipeline

828adbf4c33d9d92940bdd3f8d833102.png

ac1811e4863ded5738b2cc7d15a1d7e8.png

dd746f39baafe7a1f77d4f84749bbdb7.png

配置映射关系

c06c321d7c9086e90acead4fbe3cbe2d.png

31f5f84751e413d50c17431c0007a87c.png

点击启用,启动成功后会在运行状态显示运行

71b8218e613d1b9ff660d8c11558fe51.png

参考:

https://github.com/alibaba/otter

https://www.cnblogs.com/zhjh256/p/9261725.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值