使用 AWS RDS 在 MySQL5.7 和 MariaDB10.6 上进行复制的故事
我在AWS RDS上尝试将MySQL5.7作为主数据库,MariaDB10.6作为读取副本进行复制。
目标或目的
为了验证在AWS RDS上从MySQL5.7无停机切换到MariaDB10.6是否可行。
总结
作为一种方法,首先建立常规的MySQL5.7复制,停止读取副本的复制,并确认主服务器的位置,获取停止复制状态下的快照,并基于该快照通过RDS的快照迁移功能创建MariaDB。从创建的MariaDB开始将复制到主服务器的MySQL5.7。这就是整个流程。
程序
-
- 构建标准化的MySQL 5.7复制系统
-
- 停止复制到读取副本
-
- 确认主服务器的位置信息
-
- 获取读取副本的快照
-
- 执行快照迁移(*在目标数据库选择MariaDB)
-
- 在新创建的MariaDB上启动复制
- 删除不再需要复制的读取副本
详细 = 细节全面。
搭建MySQL 5.7的标准复制方案
使用以下步骤创建读取副本:
1. 登录AWS控制台
2. 进入RDS服务
3. 选择任意的MySQL5.7服务器单选按钮
4. 点击操作
5. 选择创建读取副本
停止在领先复制品中的复制。
用创建的领导复制品停止复制。
CALL mysql.rds_stop_replication;
确认大师位置信息
从领导复制品中参考并确认主人的信息
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 172.X.X.X
Master_User: rdsrepladmin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin-changelog.000032
Read_Master_Log_Pos: 154
〜(略)〜
获取领先复制品的快照
AWS控制台 > RDS > 选择创建的读取副本的单选按钮 > 操作 > 获取快照
进行快照迁移
AWS控制台 > RDS > 選擇已創建的讀取複本的單選按鈕 > 操作 > 遷移快照 > 選擇資料庫引擎名稱為mariadb
在进行后续操作时,请根据各个环境进行相应的设置。
关于主从复制的复制操作,建议在工作期间始终保持停止状态(因为根据max_binlog_size的设置,Master_Log_File可能会被轮换,导致后续无法启动复制操作)。
在新建的MariaDB中开始复制。
CALL mysql.rds_set_external_master(
'<hostname>',
<port>,
'<username>',
'<password>',
'<Master_Log_Fileの値>',
<Read_Master_Log_Posの値>,
0
);
CALL mysql.rds_start_replication;
mysql> show slave status \G;
〜(略)〜
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
确认Slave_IO_Running和Slave_SQL_Running均为是
删除不再需要的读取副本,因为不再需要复制。
在AWS控制台中,导航到RDS,选择已创建的读取副本的单选按钮,点击“操作”,然后选择“删除”。
已经完成了
审查
尽管这不是AWS公认的方法,但我发现可以使用这种方法在MySQL 5.7中创建MariaDB 10.6的读取副本。
如果巧妙地运用这种方法,可能能够实现从MySQL5.7无间断切换至MariaDB10.6。