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;

十四、回收旧实例

相关推荐
m0_748554811 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
早日退休!!!2 小时前
《数据结构选型指南》笔记
数据结构·数据库·oracle
xcLeigh2 小时前
KES数据库性能优化实战
数据库·sql·性能优化·sql优化·数据性能
阿正呀2 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
yoyo_zzm2 小时前
Laravel9.x新特性全解析
数据库·mysql·nginx
2501_901200533 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
m0_495496414 小时前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python
forEverPlume4 小时前
PHP怎么使用Eloquent Attribute Composition属性组合_Laravel通过组合构建复杂属性【方法】
jvm·数据库·python
2301_809204705 小时前
mysql在docker容器中如何部署_利用docker-compose快速启动
jvm·数据库·python
虹科网络安全5 小时前
艾体宝产品|深度解读 Redis 8.4 新增功能:原子化 Slot 迁移(上)
数据库·redis·bootstrap