#otter总体架构
一些术语:
Pipeline:从源端到目标端的整个过程描述,主要由一些同步映射过程组成
Channel:同步通道,单向同步中一个Pipeline组成,在双向同步中有两个Pipeline组成
DataMediaPair:根据业务表定义映射关系,比如源表和目标表,字段映射,字段组等
DataMedia : 抽象的数据介质概念,可以理解为数据表/mq队列定义
DataMediaSource : 抽象的数据介质源信息,补充描述DateMedia
ColumnPair : 定义字段映射关系
ColumnGroup : 定义字段映射组
Node : 处理同步过程的工作节点,对应一个jvm
他们之间的关系为:
#安装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
注意: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
机器添加完成以后,机器管理的列表中第一列就是nid(这个就是到时候要保存到/usr/local/otter/node/conf/nid 文件中的值),如下:
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
配置位点信息
点位可以通过在主库执行 show master status 和 select unix_timestamp() 得到。
数据源配置
数据表配置
配置channel
配置Pipeline
配置映射关系
点击启用,启动成功后会在运行状态显示运行
参考:
https://github.com/alibaba/otter
https://www.cnblogs.com/zhjh256/p/9261725.html