MySQL 雙活

mcxiaoracle發表於2021-09-08
  1. 需求概述

  2.  技術方案

    2.1  雙活同步條件

     2.1.1 自增主鍵

     2.1.2 同步使用者

     2.1.3 啟用BinLog

  3.  配置的賦值任務

  4. 單向複製

  5. 反向複製

  6. 啟動複製任務

    多地業務系統直接讀寫某地A的MySQL中心資料庫資料,中心資料庫資料實時同步到異地B的備份中心。 當某地業務系統訪問A地中心資料庫失敗時,則切換到B地備份資料庫讀寫資料。對於B地備份中心產生的業務資料,需要實時回傳至A地中心資料庫庫,確保A地業務中心與B地備份中心資料一致。

    MySQL 雙活



目前業務中心資料庫採用MySQL 5.6,系統已執行多年,表主鍵基本採用自增列,表之間存在主外來鍵依賴關係。

在異地備份中心部署北京靈蜂 Beedup 資料庫複製軟體,軟體採用日誌解析方式捕獲資料庫變化資料,並將變化資料同步到目標庫,實時保持資料庫資料一致。

MySQL 雙活


2.1 雙活同步條件

2.1.1 自增主鍵

由於中心及備份資料庫都會產生業務資料,導致中心或備份庫產生的自增主鍵在跨庫複製時會與目標庫已有資料產生衝突,針對自增主鍵衝突問題有以下兩種處理方式:

一、直接複製
調整資料庫配置檔案my.ini中的引數auto_increment_offset 和auto_increment_increment ,使得不同資料庫產生的自增值不同,包含自增值的業務資料直接複製到目標庫。

二、目標庫計算

自增值在複製時由目標庫重新計算產生,相關外來鍵表資料在複製時自動調整外來鍵值,以保持與主表資料的主外來鍵依賴關係。

由於自增值在複製前後會發生變化,需要在每張包含自增列的表中額外增加列origin_id bigint null,該列由Beedup自動建立並對應用系統透明,僅在資料同步到目標端時記錄原來的自增值。


2.1.2 同步使用者

對於主從庫雙向同步,需要在主從庫單獨建立同步使用者,該使用者僅用於 Beedup 連線資料庫,不可用於其它場景。

以同步使用者sync為例,建立使用者及許可權分配語句如下:


2.1.3 啟用BinLog

開啟主從資料庫二進位制日誌並設定日誌格式為row。

編輯my.ini檔案

log-bin=''XXXXXXXXXX"

binlog_format="ROW"


2.2 配置任務

Beedup 複製任務用於將主庫資料變化實時複製到從庫。對於資料庫雙向複製,需要配置2個複製方向相反的任務,第一個任務用於複製業務中心變化到備份中心,第二個任務用於從備份中心複製變化到業務中心。



2.2.1 單向複製任務

配置業務中心到備份中心複製任務,操作如下。
選擇工具欄[新建]按鈕,在任務屬性對話方塊中依次設定主庫及從庫連線引數。

2.2.3 反向複製任務

配置備份中心到業務中心複製任務,操作如下。
選擇工具欄[新建]按鈕,彈出任務屬性對話方塊,依次設定主庫及從庫連線引數。

如果自增值在複製時由目標庫計算產生,則選擇[整合]按鈕,在[整合選項]對話方塊設定輔助列。

2.3 啟動複製任務

依次選中任務sync和sync_inverse,然後選擇工具欄[啟動]按鈕。







來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949806/viewspace-2790922/,如需轉載,請註明出處,否則將追究法律責任。

相關文章