將外部Mysql數據複製到Azure Database for MySQL

一、 簡介
現在很多客戶的項目需要Mysql跨雲數據遷移/同步服務。本文介紹如何通過配置主服務器和副本服務器在 Azure Database for MySQL 服務中設置“數據傳入複製”。 憑藉“數據傳入複製(Data In Replication)”功能,可以將在本地或虛擬機中運行的主 MySQL 服務器或其他雲提供程序託管的數據庫服務中的數據同步到 Azure Database for MySQL 服務中的副本。

以下通過一個具體的示例來展示如何實現外部Mysql數據遷移或複製到Azure Database for MySQL。示例中將阿里雲RDS Mysql作爲主庫,Azure Database for MySQL作爲從庫,實現數據遷移/複製。本文提供了具體的操作實現步驟,同時也起到舉一反三的作用,同樣適用於其他公有云的Mysql PaaS服務、公有云/私有云/自建的Mysql數據複製到Azure Database for MySQL。

注:本文所有內容均爲測試內容,不涉及敏感信息,賬號/密碼等信息可以自行指定。

環境說明:
阿里RDS(主):一臺
Azure Database for MySQL 服務器 (從):一臺
Mysql版本:mysql 5.6
同步賬戶:repl
同步賬戶密碼:z3pX2j$1(用戶可自定義設置)
阿里RDS服務器域名:rm-m5e53j1111s1sgfkqpo.mysql.rds.aliyuncs.com
mysql登陸用戶:xnsd (用戶可自定義設置)
Azure Database for MySQL 服務器域名:sinoage.mysql.database.chinacloudapi.cn
mysql登陸用戶:xnsd@sinoage(用戶可自定義設置)

複製部分參考文檔:https://docs.azure.cn/zh-cn/mysql/howto-data-in-replication

其他配置:
需要開通允許訪問網段,本文爲測試環境,所以開放爲網段爲0.0.0.0-255.255.255.255全網段
Azure Database for MySQL 服務器測試時候,配置爲禁止SSL訪問
Workbench 工具
名詞解釋:
REPLICATION SLAVE 常用於建立複製時所需要用到的用戶權限,也就是slave server必須被master server授權具有該權限的用戶,才能通過該用戶複製。
REPLICATION CLIENT 不可用於建立複製,有該權限時,只是多了可以使用如"SHOW SLAVE STATUS"、"SHOW MASTER STATUS"等命令。
GTID 即全局事務ID(global transaction identifier),GTID實際上是由UUID+TID組成的。其中UUID是一個MySQL實例的唯一標識。TID代表了該實例上已經提交的事務數量,並且隨着事務提交單調遞增,所以GTID能夠保證每個MySQL實例事務的執行(不會重複執行同一個事務,並且會補全沒有執行的事務)。
二、 阿里RDS(主)服務器的創建及配置

  1. 登陸阿里控制檯,創建雲數據庫RDS版,按照需要創建相應的服務
    在這裏插入圖片描述

  2. 創建完成後,添加允許訪問網絡段及開通內外網域名。
    在這裏插入圖片描述
    在這裏插入圖片描述

  3. 創建高級權限用戶
    在這裏插入圖片描述

  4. 設置完畢後,進行登陸測試。
    mysql -hrm-m5e53j1111s1sgfkqpo.mysql.rds.aliyuncs.com -uxnsd -pSinoagecom123
    在這裏插入圖片描述

  5. 登陸正常, 返回控制檯創建同步使用的賬號“repl”
    在這裏插入圖片描述

  6. 創建完同步賬號“repl”,查看是否有以REPLICATION SLAVE 和 REPLICATION CLIENT權限。
    REPLICATION SLAVE 常用於建立複製時所需要用到的用戶權限,也就是slave server必須被master server授權具有該權限的用戶,才能通過該用戶複製。
    REPLICATION CLIENT 不可用於建立複製,有該權限時,只是多了可以使用如"SHOW SLAVE STATUS"、"SHOW MASTER STATUS"等命令。
    在這裏插入圖片描述

  7. 查看GTID是否開啓,阿里RDS默認是開啓的,如果爲關閉狀態,可以提工單開啓。確保阿里雲和微軟Azure上的GTID同時保持開啓或者關閉。
    在這裏插入圖片描述

三、 Azure Database for MySQL 服務器(從)的創建及配置

  1. 登陸Azure門戶,選擇Azure Database for MySQL 服務器 ,創建 “常規用途” 定價層的Paas服務器,牢記用戶名與密碼。注意定價層爲“基本”的服務器無複製命令!
    在這裏插入圖片描述
    在這裏插入圖片描述
  2. 創建完成後,添加允許訪問網絡段及開通內外網域名。
    在這裏插入圖片描述
  3. 根據自己情況選擇打開或者關閉SSL,本文以禁用SSL進行演示。
    在這裏插入圖片描述
  4. 設置完畢後,進行登陸測試。
    mysql -hsinoage.mysql.database.chinacloudapi.cn -uxnsd@sinoage -pSinoagecom123
    在這裏插入圖片描述
  5. 登陸 workbench 創建同步使用的賬號“repl”(一般同步賬號爲主服務器創建,副本服務器只是建議創建)
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  6. 爲用戶添加REPLICATION SLAVE 和 REPLICATION CLIENT權限。
    在這裏插入圖片描述
  7. 查看GTID狀態
    在這裏插入圖片描述
    查看到Azure的GTID模塊爲關閉狀態,需要給21V開工單,打開GTID模塊及相應參數。確保微軟Azure和阿里雲上的GTID同時保持開啓或者關閉。
    參考參數:
    –gtid_mode=ON
    –log-bin
    –log-slave-updates
    –enforce-gtid-consistency
  8. 開通後,會顯示 “gtid_mode | ON ”
    在這裏插入圖片描述

    四、 同步驗證
  9. 在阿里RDS服務器(主)執行:
    show master status;
    記錄File | Position 號,後面會用到。
    在這裏插入圖片描述
  10. 在AzurePaas服務器上依次執行:
    格式爲:CALL mysql.az_replication_change_master(’<master_host>’, ‘<master_user>’, ‘<master_password>’, 3306, ‘<master_log_file>’, <master_log_pos>, ‘<master_ssl_ca>’);
    mysql>CALL mysql.az_replication_change_master(‘rm-m5e53j1111s1sgfkqpo.mysql.rds.aliyuncs.com’, ‘repl’, ‘z3pX2j$1’, 3306, ‘mysql-bin.000008’, 63786, ‘’);
    mysql>CALL mysql.az_replication_start;
    mysql>show slave status\G
    在這裏插入圖片描述
  11. 查看到以下參數爲"Yes"爲正常
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    在這裏插入圖片描述
  12. 在阿里控制檯上創建新的數據庫
    在這裏插入圖片描述
    在這裏插入圖片描述
  13. 在AzurePaas服務器上執行show databases;查看已經同步過來了。
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章