otter雙A配置
最近做跨國服務器的數據同步,用了阿里的otter開源框架,遇到了不少問題,寫一下文檔為以后做參考。
第一步:
下載所需的文件 :otter,zookeeper,aria2
otter下載地址:https://github.com/alibaba/otter
zookeeper下載地址:https://github.com/apache/zookeeper
aria2下載地址:http://sourceforge.net/projects/aria2/files/stable/
zookeeper :的配置網上有很多
aria2 : 加速文件傳輸用的 使用方法網上搜,很多
這里主要寫對otter的使用
第二步:
進入$otter_home目錄
執行:mvn clean install -Dmaven.test.skip -Denv=release
運行完后在 $otter_home 會生成 target 文件 解壓文件中的 manager 和 node 文件
文件啟動順序 aria2 > zookeeper > manager > node
服務器環境搭建 :
一:在 A B 服務器中安裝 jdk mysql
安裝MySQL
安裝完成后配置文件可根據現有的配置文件進行修改:
必須啟用binlog而且只支持ROW格式
log-bin=mysql-bin
binlog-format=ROW
為了保證在同步過程中不意外產生數據差異,啟用binlog的實時同步到磁盤的操作(此操作會對磁盤IO有開銷),
避免在服務突然中斷過程中差生binlog丟失造成服務無法啟用:
sync_binlog=1
為提高兼容性最好默認就使用UTF8
character-set-server=utf8
指定固定的數據存儲文件夾:
mkdir /data/mysql
datadir=/data/mysql
此數據庫集群里面的每台MySQL的server-id必須不同,經過溝通為了保證伺候服務器集群的需求,暫定為8:
server-id=2
auto-increment-increment=8
auto-increment-offset=1
二: 在 A 中配置 ( node ) 在 B 中配置 ( zookeeper manager node)
導入需要的的表:
#mysql -uroot -pabc-123 <otter-manager-schema.sql
#mysql -uroot -pabc-123 <otter-manager-retl.sql
manager安裝:
mkdir -p /usr/local/manager
tar xf manager.deployer-4.2.12.tar.gz -C /usr/local/mamager
cd /usr/local/mamager/conf
vim otter.properties
otter.domaniName = 10.0.0.2
otter.port = 8081
otter.database.driver.url = jdbc:mysql://10.0.0.2:3306/otter
otter.database.driver.username = root
otter.database.driver.password = abc-123
otter.zookeeper.cluster.default = 10.0.0.2:2181;10.0.0.2:2182;
啟動manager : /startup.sh
vim otter. properties
otter.manager.address = 10.0.0.2:1099
cd /usr/local/node/bin
=================================到 此 A 服務器搭建完畢。==============================
配置B服務器:
1:安裝MySQL
安裝完成后配置文件可根據現有的配置文件進行修改:
必須啟用binlog而且只支持ROW格式
log-bin=mysql-bin
binlog-format=ROW
為了保證在同步過程中不意外產生數據差異,啟用binlog的實時同步到磁盤的操作(此操作會對磁盤IO有開銷),
避免在服務突然中斷過程中差生binlog丟失造成服務無法啟用:
sync_binlog=1
為提高兼容性最好默認就使用UTF8
character-set-server=utf8
指定固定的數據存儲文件夾:
mkdir /data/mysql
datadir=/data/mysql
此數據庫集群里面的每台MySQL的server-id必須不同,經過溝通為了保證伺候服務器集群的需求,暫定為8:
server-id=2
auto-increment-increment=8
auto-increment-offset=1
2:安裝java
rpm -ivh jdk-8u74-linux-x64.rpm
3:安裝aria2
tar xf aria2-1.17.1.tar.gz
mv aria2-1.17 /usr/local/aria2
cd /usr/local/aria2
./configure
make
make install
4:安裝zookeeper
mkdir /usr/local/zk
tar xf zookeeper-3.5.1-alpha.tar.gz -C /usr/local/zk
cd /usr/local/zk
mkdir data
cd data
echo “3” >myid
cd ..
cd conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/usr/local/zk/data
server.1 =10.0.0.2:8881:7771
server.2 =10.0.0.2:8882:7772
server.3 =10.0.0.3:8883:7773:observer
:x
5:安裝node
vim otter. properties
otter.manager.address = 10.0.0.2:1099
cd /usr/local/node/bin
6:導入需要的表
#mysql -uroot -pabc-123 <otter-manager-retl.sql
otter-manager-retl.sql這個創建表會創建用戶,請修改次用戶的密碼。
配置otter
登錄manager 地址為 manager中配置的
賬號:admin
密碼:admin
登陸后必須修改。
1:添加zookeeper集群
2:添加node
將 A , B 兩個 node 的ip地址
此處需要注意,在選擇zookeeper集群的時候需要就近選擇。
添加之后會生成node的號碼,當你啟用node的時候會受到報錯需要nid,此處的nid就是以當你添加之后manager給node分配的號碼為准:
cd /usr/local/node/conf
echo “1”>nid
啟動node,所有的node都需要啟動
cd /usr/local/node/bin
./startup.sh
都啟動后稍后刷新manager node 狀態為啟動狀態
3:添加數據源
4:添加數據表
這地方添加需要同步的數據表:
5:配置cannal
6:配置channel
7:Pipeline管理
配置2個Pipeline
如果要用DDL同步,一個pipeline開啟ddl同步,另一個不要開啟,且都要開啟跳過ddl異常,DryRun模式 不要開啟
8:添加映射關系
到此可以點擊運行進行。
成功開啟后如下圖:
監控管理
監控項目:
同步延遲,position超時(位點超過多少時間沒有更新) , 一般業務方關心這些即可
異常 (同步運行過程中出現的異常,比如oracle DBA關心oracle系統ORA-的異常信息,mysql DBA關心mysql數據庫相關異常)
process超時(一個批次數據執行超過多少時間),同步時間超時(數據超過多少時間沒有同步成功過)
閥值設置
1800@09:00-18:00 , 這例子是指定了早上9點到下午6點,報警閥值為1800.
發送對象
otterteam為otter團隊的標識,阿里內部使用了dragoon系統監控報警通知,如果外部系統可實現自己的報警通知機制
修改發送對象:
注意:
1,安裝依賴包yum install -y nc
2,域名的問題,在實際的生產過程中最好綁定域名,如無dns可使用hosts文件,如果不綁定域名manager的很多查看功能會報錯