将外部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;查看已经同步过来了。
    在这里插入图片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章