1 需求
- 在同一台伺服器同一MySQL執行個體中的source庫和target庫都存在student表。如果source庫中該表發生增删改操作時,也需要展現到target庫的student表中;
2 解決方案
2.1 方案一:使用Shell腳本實作
- 由于自己缺少使用Shell程式設計的經驗,此路暫時不通;
- shell腳本實作Mysql主從資料庫
2.2 方案二:DataX
- 官方介紹:
- DataX 是阿裡巴巴集團内被廣泛使用的離線資料同步工具/平台,實作包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各種異構資料源之間高效的資料同步功能。
- 沒有采納此方案的原因:
- DataX 本身占用空間太大,771M;
- DataX 中使用到了Python,這門語言自己暫時也是一知半解;
- DataX 适用于不同資料源的資料同步,而這個需求中的資料源均為MySQL,故放棄此方案;
2.3 方案三: Otter 增量同步
- 官方介紹:
- 純Java開發;
- 基于資料庫增量日志解析,準實時同步到本機房或異地機房的mysql/oracle資料庫. 一個分布式資料庫同步系統;
2.3.1 工作原理(摘自官網):
原理描述:
- 基于Canal開源産品,擷取資料庫增量日志資料;
典型管理系統架構,manager(web管理)+node(工作節點)
a. manager運作時推送同步配置到node節點;
b. node 節點将同步狀态回報到manager上;
- 基于zookeeper,解決分布式狀态排程,允許多node節點之間協同工作;
2.3.2 環境準備
- MySQL 5.7.24
- JDK 1.8
- otter-manager-4.2.17
- otter-node-4.2.17
- zookeeper-3.4.10
- Aria2-1.34.0
2.3.3 環境搭建及參數配置
- otter 配置單向同步步驟:
- MySQL 開啟binlog;
- 配置zookeeper參數;
- 配置manager參數;
- 初始化otter manager系統表,該表會在配置otter.properties中使用到;
- 配置node參數;
- 參考連結:
- 資料同步——otter
- 資料同步利器-otter的搭建使用說明
- Otter入門簡介
3. Otter搭建過程中遇到的問題總結
3.1 MySQL 開啟binlog
- Windows 系統:
-
中添加如下語句,注意my.ini儲存時,編碼為:GB2312my.ini
-
# Binary Logging
log-bin=mysql-bin
binlog-format=ROW
#Server ID 不能重複
#注意:在 MySQL 5.7.3 及以後版本,如果沒有設定server-id, 那麼設定binlog後無法開啟MySQL服務.
server-id=201609
- Linux系統:
- 檢視是否有設定使用指定目錄的
檔案:my.cnf
;如果沒有輸出,表示沒有設定;ps aux|grep mysql|grep 'my.cnf'
- 檢視mysql預設讀取
的目錄:my.cnf
;mysql --help|grep 'my.cnf'
- 檢視是否有設定使用指定目錄的
# Binary Logging
log-bin=/var/lib/mysql/mysql-bin # 此處為絕對路徑
binlog-format=ROW
#Server ID 不能重複
#注意:在 MySQL 5.7.3 及以後版本,如果沒有設定server-id, 那麼設定binlog後無法開啟MySQL服務.
server-id=201609
- 檢視是否設定成功:
- 通過MySQL用戶端:
,如果設定成功,會有如下輸出:SHOW MASTER STATUS
- 通過MySQL用戶端:
3.2 初始化Otter系統表
- ERROR 1067 (42000): Invalid default value for 'GMT_CREATE'
3.3 manager資料表配置說明:
參考資料:
- 異構資料庫遷移與同步(一)之yugong
- 阿裡巴巴分布式資料庫同步系統Otter
- mysql 檢視目前使用的配置檔案my.cnf的方法
- 阿裡雲伺服器部署otter實作資料雙A同步過程記錄
轉載于:https://www.cnblogs.com/linkworld/p/10226327.html