一、 簡介
現在很多客戶的項目需要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(主)服務器的創建及配置
-
登陸阿里控制檯,創建雲數據庫RDS版,按照需要創建相應的服務
-
創建完成後,添加允許訪問網絡段及開通內外網域名。
-
創建高級權限用戶
-
設置完畢後,進行登陸測試。
mysql -hrm-m5e53j1111s1sgfkqpo.mysql.rds.aliyuncs.com -uxnsd -pSinoagecom123
-
登陸正常, 返回控制檯創建同步使用的賬號“repl”
-
創建完同步賬號“repl”,查看是否有以REPLICATION SLAVE 和 REPLICATION CLIENT權限。
REPLICATION SLAVE 常用於建立複製時所需要用到的用戶權限,也就是slave server必須被master server授權具有該權限的用戶,才能通過該用戶複製。
REPLICATION CLIENT 不可用於建立複製,有該權限時,只是多了可以使用如"SHOW SLAVE STATUS"、"SHOW MASTER STATUS"等命令。
-
查看GTID是否開啓,阿里RDS默認是開啓的,如果爲關閉狀態,可以提工單開啓。確保阿里雲和微軟Azure上的GTID同時保持開啓或者關閉。
三、 Azure Database for MySQL 服務器(從)的創建及配置
- 登陸Azure門戶,選擇Azure Database for MySQL 服務器 ,創建 “常規用途” 定價層的Paas服務器,牢記用戶名與密碼。注意定價層爲“基本”的服務器無複製命令!
- 創建完成後,添加允許訪問網絡段及開通內外網域名。
- 根據自己情況選擇打開或者關閉SSL,本文以禁用SSL進行演示。
- 設置完畢後,進行登陸測試。
mysql -hsinoage.mysql.database.chinacloudapi.cn -uxnsd@sinoage -pSinoagecom123
- 登陸 workbench 創建同步使用的賬號“repl”(一般同步賬號爲主服務器創建,副本服務器只是建議創建)
- 爲用戶添加REPLICATION SLAVE 和 REPLICATION CLIENT權限。
- 查看GTID狀態
查看到Azure的GTID模塊爲關閉狀態,需要給21V開工單,打開GTID模塊及相應參數。確保微軟Azure和阿里雲上的GTID同時保持開啓或者關閉。
參考參數:
–gtid_mode=ON
–log-bin
–log-slave-updates
–enforce-gtid-consistency - 開通後,會顯示 “gtid_mode | ON ”
四、 同步驗證 - 在阿里RDS服務器(主)執行:
show master status;
記錄File | Position 號,後面會用到。
- 在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
- 查看到以下參數爲"Yes"爲正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
- 在阿里控制檯上創建新的數據庫
- 在AzurePaas服務器上執行show databases;查看已經同步過來了。