基於otter資料同步實驗搭建
目錄
一、實驗目的
本次實驗主要通過虛擬機器安裝otter,學習otter如何管理資料同步。
二、實驗內容
本次實驗需要兩個資料庫,分別是first-msyql和second-mysql,並且通過otter工具將first-mysql中的資料同步至second-mysql中,同步的方式包含(1)增量實時同步;(2)全量同步。
三、資源劃分
vm | 安裝元件 | 說明 |
192.168.198.130 | first-mysql | first-mysql為mysql 5.6 |
192.168.198.131 | second-mysql | second-mysql為mysql 5.6 |
192.168.198.132 | otter、zookeeper | 採用較新版本即可 |
四、元件的安裝配置
元件的安裝共分為如下三個部分:
(1)mysql資料庫的安裝
(2)zookeeper安裝
(3)otter安裝
4.1 mysql資料庫的安裝
4.1.1前置條件
shell> yum install libaio shell> yum install perl-Data-Dumper.x86_64
4.1.2下載地址
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz
4.1.3 安裝
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
shell> export PATH=$PATH:/usr/local/mysql/bin
4.1.4 通過命令列連線mysql,修改許可權
shell> mysql -u root -p #初次以root賬戶登入,預設沒有密碼
mysql> use mysql; #設定root賬戶密碼
mysql> update user set password=password('you password') where user='root'and host='localhost';
mysql> GRANT ALL PRIVILEGES ON *.* TO'your username'@'%' IDENTIFIED BY 'your password' WITH GRANT OPTION; # 設定遠端主機登入
mysql> FLUSH PRIVILEGES;
4 mysql配置canal許可權
配置:修改mysql的配置檔案 vim /etc/my.cnf,設定以下配置
log-bin=mysql-bin
# binary logging format - mixed recommended
# binlog_format=mixed
binlog_format=ROW #修改成ROW
server-id = 1 #兩個機房的serverid設定為不一樣的值
default-character-set=utf8
設定canal賬號:mysql配置完成後,需要分別在A、B兩臺資料庫上分配otter的資料庫賬號和密碼,例如canal/canal。具體指令碼如下所示:
CREATE USER canal IDENTIFIED BY 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'canal'@'%';
-- GRANT ALL PRIVILEGES ON *.* TO 'canal'@'%' ;
FLUSH PRIVILEGES;
檢視canal賬戶的許可權:
show grants for 'canal';
檢視mysql的server-id:
show variables like 'server_id';
檢視本地bin-log日誌是否開啟:
show variables like '%log_bin%'
5 關閉防火牆
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
6 mysql重啟
shell(mysql)> bin/mysqladmin -u root -p shutdown
shell(mysql)> bin/mysqld_safe --user=mysql &
4.2 zookeeper的安裝
4.2.1 下載地址
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
4.2.2 解壓至指定目錄
tar xzvf zookeeper-3.4.10.tar.gz -C /usr/local
4.2.3 修改配置,啟動zookeeper服務
本次安裝為zookeeper單機版。zookeeper配置具體如下:
(1)進入conf目錄,修改zoo-sample.properties檔名為zoo.properties
(2)啟動zookeeper命令:
./bin/zkServer.sh start
(3)檢視zookeeper狀態命令:
./bin/zkServer.sh status
4.3 otter的安裝
4.3.1 介紹
otter是基於資料庫增量日誌解析,準實時的mysql資料庫同步工具。
其應用場景主要如下:
(1)主從複製
(2)異構資料庫同步
4.3.2 原理及架構
原理描述:
-
基於canal增量獲取源資料庫資料
-
典型管理系統架構,manager(web管理)+node(工作節點)
-
manager節點執行時推送同步配置到node節點
-
node節點將同步狀態反饋到manager上
-
-
基於zookeeper解決分散式狀態排程,協調多node節點之間協同工作
架構圖:
4.3.3 安裝及配置
(1)安裝Manager
地址:https://github.com/alibaba/otter/wiki/Manager_Quickstart
(2)安裝Node,參考官網
地址:https://github.com/alibaba/otter/wiki/Node_Quickstart
(3)Manager使用介紹
地址:https://github.com/alibaba/otter/wiki/Manager%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D