說明 : 為了 mysql 中國、美國、歐洲數據庫實時同步
文檔和地址
項目源碼 https://github.com/alibaba/otter 發布的版本 https://github.com/alibaba/otter/releases 文檔 https://github.com/alibaba/otter/wiki/Faq
說明
mysql 可以單獨為一個服務器上
node 節點也可單獨在一個服務器上
zookeeper 也可單獨在一個服務器上
manager 也可單獨在一個服務器上
啟動順序
1 ) mysql
2 ) zookeeper
3 ) manager
otter.properties 中 otter.zookeeper.cluster.default
配置zookeeper集群 離manager最近的一個 zookeeper server地址:port
4 ) node
例子部署圖
配置前准備階段
1. ) JDK必須 1.6以上版本.
Linux 下載 rpm 包 執行 rpm -ivh 包名.rpm
Ubuntu 下載 tar.gz 執行壓縮 tar -zxvf 包名.tar.gz
Ubuntu 需配置環境變量
sudo gedit ~/.profile 在文件末尾加上 export JAVA_HOME=jdk文件路徑 export JRE_HOME=jdk文件路徑/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH
source ~/.profile
//查看java版本
java -version
2. ) 安裝mysql 5.1 > 以上版本.
注意:mysql 5.6 安裝后 密碼初始隨機 在 root/ .mysql_secret 文件里
查看隱藏文件 ll –a
my.cnf文件在 /usr/my.cnf目錄了, 不在 /etc/my.cnf
配置文件參考如下
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
##最大連接數
max_connections=1000
##服務器字符編碼
character_set_server=utf8
##開啟log-bin row
log-bin=mysql-bin
binlog_format='row'
##日志默認保存3天
expire_logs_days=3
##必須配置,每個數據庫配置的值不一樣
server-id=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
3. ) 源數據庫已開啟binlog,並且binlog_format為ROW.
mysql> show variables like '%binlog_format%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | ROW |
+---------------+-------+
安裝aria2 (在 node 節點服務器上安裝)
下載地址 http://sourceforge.net/projects/aria2/files/stable/
需要g++ 如沒有需要安裝 yum install gcc-c++ libstdc++-devel 下載aria2 並解壓 之后編譯 配置環境 例子如下 mkdir /usr/local/aria2 ./configure --prefix=/usr/local/aria2 make && make install vi /etc/profile PATH=$PATH:/usr/local/aria2/bin source /etc/profile 測試是否安裝成功 aria2c 命令
安裝zookeeper 並啟動
參考地址 http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
http://blog.csdn.net/shirdrn/article/details/7183503#
主機名稱到IP地址映射配置
192.168.0.179 slave-01
192.168.0.178 slave-02
192.168.0.177 slave-03
配置zookeeper conf文件
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
修改
tickTime=2000
dataDir=/home/otter/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=slave-01:2888:3888
server.2=slave-02:2888:3888
server.3=slave-03:2888:3888
里面的目錄沒有 需要自行創建 不然無法啟動
啟動之前還要配置 host文件
vi /etc/hosts
192.168.0.179 slave-01
192.168.0.178 slave-02
192.168.0.177 slave-03
啟動 zookeeper server ./zkServer.sh start
zookeeper manager里面查看zookeper需要 nc 如果沒有 需要安裝(不安裝也不影響同步)
yum install nc
(另:配置集群觀察者模式 在 zoo.cfg 文件中做如下修改
在需要觀察者模式的zookeeper server上
配置如下
tickTime=2000
dataDir=/home/otter/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
peerType=observer
server.1=slave-01:2888:3888:observer
server.2=slave-02:2888:3888
server.3=slave-03:2888:3888
##在 slave-01上配置文件如上,slave-01即是觀察者模式 不參與選舉
)
解壓manager 並啟動
conf/目錄下 otter.properties ## otter manager domain name otter.domainName = 192.168.0.100 -- web管理ip和node節點配置的 ## otter manager http port otter.port = 8080 ## jetty web config xml otter.jetty = jetty.xml ## otter manager database config otter.database.driver.class.name = com.mysql.jdbc.Driver otter.database.driver.url = jdbc:mysql://localhost:3306/otter otter.database.driver.username = root otter.database.driver.password = ## otter communication port otter.communication.manager.port = 1099 ## otter communication pool size otter.communication.pool.size = 10 ## default zookeeper address otter.zookeeper.cluster.default = 192.168.0.179:2181 ##如果有多個逗號分開,一個集群只需要寫離manager最近的一個即可 ## default zookeeper sesstion timeout = 60s otter.zookeeper.sessionTimeout = 60000 ## otter arbitrate connect manager config otter.manager.address = ${otter.domainName}:${otter.communication.manager.port} ## should run in product mode , true/false otter.manager.productionMode = true ## self-monitor enable or disable otter.manager.monitor.self.enable = true ## self-montir interval , default 120s otter.manager.monitor.self.interval = 120 ## auto-recovery paused enable or disable otter.manager.monitor.recovery.paused = true # manager email user config otter.manager.monitor.email.host = smtp.gmail.com otter.manager.monitor.email.username = otter.manager.monitor.email.password = otter.manager.monitor.email.stmp.port = 465
解壓node 並啟動
先進入manager中 按如下操作
機器管理 (菜單)-->> zookeeper管理(選項)(按照提示添加部署好的zookeeper集群)
圖如下
機器管理 (菜單) -->> Node管理 (選項)(安裝提示添加node節點,)
圖如下
機器端口 2088
添加成功后 會產生一個 序號 (> 0 整數)
將此序號寫入 node conf目錄中
echo 序號 > node/conf
修改配置文件 conf/otter.properties
# otter node root dir
otter.nodeHome = ${user.dir}/../
## otter node dir
otter.htdocs.dir = ${otter.nodeHome}/htdocs
otter.download.dir = ${otter.nodeHome}/download
otter.extend.dir= ${otter.nodeHome}/extend
## default zookeeper sesstion timeout = 60s
otter.zookeeper.sessionTimeout = 60000
## otter communication pool size
otter.communication.pool.size = 10
## otter arbitrate & node connect manager config
## manager管理地址 : port
otter.manager.address = 192.168.0.100:1099
啟動 node 節點
./node/bin/startup.sh
啟動成功后能夠在manager管理里面看到 添加的node節點 狀態 為 “已啟動”
接下來在manager里
1.)配置管理菜單中 依次配置 數據源 、數據表 、canal
2.)在同步管理菜單中添加 channel (是否開啟數據一致性:開啟)
(注意:參數盡量選擇默認)
3.)添加 pipeline (一個channel 只能添加兩個 pipeline ,
兩個為雙向同步,如果要用DDL同步,一個pipeline開啟ddl同步,
另一個不要開啟,且都要開啟跳過ddl異常,DryRun模式 不要開啟)
4.)配置 表映射
5.)在channel管理中開啟 channel 同步即可