线上数据库主从切换步骤

更改IP和USER表结构需要进行主从切换

Posted by cuihongpeng on February 14, 2017

为什么改表结构要进行主从切换

在现有业务量级下,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分钟后),将临时主库删除,完成操作。