# 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 重復 注意:針對阿里雲 RDS for MySQL , 默認打開了 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 <<EOF > /opt/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir= /data/zookeeper/data dataLogDir= /data/zookeeper/log clientPort=2182 EOF 配置文件注意事項: 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 echo 1 > 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:3306 canal.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