天天看點

MySQL 同一執行個體不同庫之間表同步(Otter 應用)

1 需求

  • 在同一台伺服器同一MySQL執行個體中的source庫和target庫都存在student表。如果source庫中該表發生增删改操作時,也需要展現到target庫的student表中;
MySQL 同一執行個體不同庫之間表同步(Otter 應用)

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 工作原理(摘自官網):

MySQL 同一執行個體不同庫之間表同步(Otter 應用)
原理描述:
  1. 基于Canal開源産品,擷取資料庫增量日志資料;
  2. 典型管理系統架構,manager(web管理)+node(工作節點)

    a. manager運作時推送同步配置到node節點;

    b. node 節點将同步狀态回報到manager上;

  3. 基于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

      中添加如下語句,注意my.ini儲存時,編碼為:GB2312
# 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 同一執行個體不同庫之間表同步(Otter 應用)

3.2 初始化Otter系統表

  • ERROR 1067 (42000): Invalid default value for 'GMT_CREATE'
MySQL 同一執行個體不同庫之間表同步(Otter 應用)

3.3 manager資料表配置說明:

MySQL 同一執行個體不同庫之間表同步(Otter 應用)

參考資料:

  • 異構資料庫遷移與同步(一)之yugong
  • 阿裡巴巴分布式資料庫同步系統Otter
  • mysql 檢視目前使用的配置檔案my.cnf的方法
  • 阿裡雲伺服器部署otter實作資料雙A同步過程記錄

轉載于:https://www.cnblogs.com/linkworld/p/10226327.html