AWS MySQL 升级(二)—— MySQL API逻辑同步升级操作步骤

接上一篇 AWS MySQL 升级(一)------ 对比各类方案及原理_pg跨库查询-CSDN博客,由于操作步骤太多,单独拆出来一份。

零、 预检查

  • 主库event_scheduler参数,应该为0

show variables like '% event_scheduler**%';**

  • binlog保留时长,不低于24

call mysql.rds_show_configuration;

  • 是否已建好同步用户

select user,host from mysql.user;

  • 主从库白名单是否一致
  • 参数组、选项组是否一致
  • 业务是否有使用从库
  • 是否有中美同步链路

一、 创建只读副本

选择待升级实例 -> 操作 -> 创建只读副本

新库取名(后续应用将使用该连接串)

选择创建只读副本,等待创建完成即可,大库耗时较长,建议提前操作。

二、 升级新只读副本

参考上篇本地升级步骤

三、 新 只读副本提升为主库

  • event_scheduler 开始的时候一定要设置为0,如果需要,等版本升级完,再修改为1
  • 修改binlog retention period ,在源库和升级库上操作
sql 复制代码
call mysql.rds_show_configuration;
call mysql.rds_set_configuration('binlog retention hours', 24);
  • 停复制进程,记录 Master_Log_File 和 Exec_Master_Log_Pos,建议执行2次
sql 复制代码
CALL mysql.rds_stop_replication;
SHOW SLAVE STATUS\G
  • 高版本DB提升为主库

注意如果DB处于存储优化阶段,无法提升为主库

提升时间为1分钟左右

四、 配置逻辑同步

  • 在源主库上创建复制用户
sql 复制代码
CREATE USER 'repl'@'%' IDENTIFIED BY 'xxxx';
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl'@'%';
  • 在提升的主库上通过API设置主从复制

源库的IP地址,需要ping 源库的连接串获取,并且将此ip添加到新库的安全组中。

sql 复制代码
call mysql.rds_set_external_master(
'源库的IP地址',
3306,
'repl',
'xxx',
'mysql-bin-changelog.001109',
120,
0);

CALL mysql.rds_start_replication;
SHOW SLAVE STATUS\G

五、为升级后的DB创建从库

参考第一步

六、 为升级后的DB配置监控及标签

参考创建SOP

七、 配置nginx至旧主库

将Nginx中连接串配置为旧主库连接串,重启Nginx

八、 业务切换连接至Nginx

业务操作

DBA检查连接切换情况,是否都已切换至通过Nginx代理连接

show procsslist;

登录检查业务是否仍有连接

select db,user,host from information_schema.processlist where host like '10.0.xx.xx%';

九、检查主从同步延迟情况

show slave status\G

务必执行。若存在延迟或报错时执行切换,将导致切换后数据不一致。

十、 配置nginx至新主库

十一 、 业务切换连接至新主库

业务修改连接串至新主库,DBA检查连接情况

登录新主库检查,业务是否已切换至新主库

select db,user,host from information_schema.processlist where host not like '10.0.xx.xx%';

登录旧主库检查,业务是否仍有连接

select db,user,host from information_schema.processlist where host not like '10.0.xx.xx%';

十二、修改从库连接串

  • 此步骤从库会中断。若业务有使用从库,可以先修改连接串至主库,避免中断

将原从库连接串重命名加 -old

将新从库连接串重命名为旧从库连接串,避免从库业务需重新配置

十三、 断开升级前后主从同步链路

从库关系重置

CALL mysql.rds_stop_replication;

CALL mysql.rds_reset_external_master;

十四、回收旧实例

相关推荐
码上飞扬17 分钟前
深入 MySQL 高级查询:JOIN、子查询与窗口函数的实用指南
数据库·mysql
海洋与大气科学1 小时前
【matlab】地图上的小图
开发语言·数据库·matlab
Geek__19921 小时前
Sqlite3交叉编译全过程
jvm·数据库·sqlite
·云扬·2 小时前
【技术派后端篇】 Redis 实现用户活跃度排行榜
数据库·redis·缓存
日月星辰Ace3 小时前
基于 AWS DynamoDB 分布式锁
分布式·aws
安 当 加 密3 小时前
如何通过安当TDE透明加密实现免改造的SQL Server数据库加密?性能实测与行业实践全解析
数据库
Databend3 小时前
Databend Operator: 打造开源的数据仓库部署利器
数据库
昊昊昊昊昊明3 小时前
10天学会嵌入式技术之51单片机-day-3
数据库·mongodb
//承续缘_纪录片3 小时前
SQL_连续登陆问题
数据库·sql
清水4 小时前
oracle不同数据库版本的自增序列
数据库·sql