首页 > 代码库 > MySQL主备停机步骤与注意事项

MySQL主备停机步骤与注意事项

  双十一马上到了,一堆的事情,今天登录mysql数据库服务器的时候突然发现服务器时间戳不对,比北京时间快了几分钟,我的天。。。随后检查了其他的几台数据库服务器发现同样都存在不同的偏差,最小的比北京时间快几秒,最大的长达8分钟,感觉整个人都不舒服了。。。服务器时间戳没有同步会导致什么问题呢,举个最简单的例子你的程序代码里面用now()来获取时间,比如一个订单,你最终会发现订单的处理时间竟然比订单的创建时间来到早,马爸爸和东哥要是知道了还不得发飙啊!!!

  随后要做的事情就是改服务器时间了,改服务器时间本身是个很简单的事情,可是要考虑到应用数据在随时写入,两台主从服务器还在实时同步,所以大概列了一个详细的计划和步骤,大体思路是:停应用   停数据库(先备后主)   改时间    启数据库(先主后备)   启应用

备忘下:

  1 通知系统上下游,以及相关业务,系统某个时间点(一般在凌晨)停止服务

  2 关闭服务器入口,比如nginx/F5等,避免新的订单进入

  3 关闭定时任务,避免任务继续在跑

  4 关闭应用

  5 关闭MHA(MySQL高可用方案

  6 关闭MySQL从库

    a.先查看当前的主从同步状态show slave status\G;看是否双yes

    b.执行stop slave

    c.停止从库服务mysqladmin shutdown -u用户名 -p密码

    d.查看是否还有mysql的进程ps -ef | grep mysql

    d.如果部署了多个实例,那每个实例都要按照以上步骤来操作

  7 关闭MySQL主库

    a.停止主库服务mysqladmin shutdown -u用户名 -p密码

    b.查看是否还有mysql的进程ps -ef | grep mysql

  8 修改数据库服务器时间

  9 启动MySQL主库

    a.启动主库服务mysqladmin start -u用户名 -p密码

    b.查看mysql的进程ps -ef | grep mysql

  10 启动MySQL从库

    a.启动从库服务mysqladmin start -u用户名 -p密码

    b.启动复制start slave;

    c.检查同步状态show slave status\G;是否双yes

    d.查看mysql的进程ps -ef | grep mysql

  11 启动MHA

  12 启动应用

  13 启动定时器

  14 启动外部入口

  15 完毕!

 

MySQL主备停机步骤与注意事项