为什么改表结构要进行主从切换
在现有业务量级下,user和ip两张表的访问量很大,直接对线上表结构进行修改,会因为mysql的保护机制造成雪崩,影响线上服务。
基本思路: 创建新的主库,将线上读流量导向新的主库,对老主库进行表结构修改,待操作完成,将流量切回。
实施步骤:
-
若是因为更改表结构而进行主从切换,请事先准备好相应sql语句,并在测试机测试通过。
-
登录ucloud,通过控制台创建新的从库(一键创建)。
-
登录中控机备份database.conf文件(方便恢复使用),更改database.conf中数据库的读ip地址为新主库ip地址(写地址千万不要变)。
-
将新从库提升为主库(一键提升)。
-
在中控机代码根目录下执行sh cache.sh,使新配置文件生效。
-
执行sh local.sh脚本,查看各接口服务是否正常。
-
观察日志,看是否存在报错,若无报错进行下一步,否则,进行回滚操作。
-
将新的database.conf文件scp到on1机器(后续会提供脚本),在on1机器的代码根目录下执行sh cache.sh,观察日志,若无报错进行下一步,否则,进行回滚操作。
-
将中控机上的database.conf文件scp到其他线上机器(后续会提供脚本),在代码根目录下执行sh cache.sh,观察日志,若无报错进行下一步,否则,进行回滚操作。
-
观察线上日志,查看关键页面是否正常,若正常则进行下一步,否则,进行回滚操作。
-
对原主库进行数据表结构修改,每一次结构更改都需要观察线上服务是否正常,若无问题,修改完成后进行下一步。
-
使用中控机备份的database.conf进行线上单台配置文件恢复,观察日志,若正常则恢复其他机器配置文件,否则,将流量切回。
-
观察线上服务是否正常,若正常(30分钟后),将临时主库删除,完成操作。