演练包括被动切换和主动切换两部分。被动切换是主库宕机,主动切换是人工手动触发。
演练步骤大致如下:
1 先停掉主库,模拟主库宕机
2 mha将vip切到备库,备库变成主库,应用可以正常读写数据库
3 重新启动宕机的原主库
4 在原主库上建立同步关系(根据宕机时,日志记录的binlog的文件名和偏移量,恢复从这里开始)
5 mha手动切换主库,还原到最初状态,应用可以正常读写数据库
6 演练结束
演练过程问题总结:
1 mha每次自动切换之后都会结束自身进程,并在日志目录如/app/mha/xxx/下生成成功或失败标记(sys.failover.complete/error),下一次要启动mha之前要把这些标记文件删除,否则mha无法正常启动,因为有了这些标记文件,mha认为已经切换结束
2 数据库主机切换严谨做法是这个时候要把master设置为只读,然后设置MASTER_LOG_FILE和MASTER_LOG_POS,最后启动复制
3 mha手动切换要指定端口,否则只用ip会被mha认为没有存活