我有 MySQL 主从复制,它运行良好;我搜索了整个网络和 MySQL 网站,想找到使用复制的标准程序,但一无所获。似乎管理员很乐意使用复制,但当需要执行灾难恢复时,没有将初始计划付诸实践并公开分享。
我想知道的是,如果主机损坏、烧毁等,如何让从机取代主机。我猜从机应该采用主机的网络地址,但还应该做什么?例如,更改 MySQL 用户权限或运行一些命令!如果有参考资料,请附上。
答案1
答案2
用副本替换 MySQL 服务器所需要做的就是切换服务器的 IP 地址,无需在 MySQL 上执行任何其他命令。
如果您想要更加安心并自动执行此操作,您可以执行以下操作:
- 让两个 MySQL 服务器都进行主主复制,检查这里
- 创建一个虚拟 IP,供初始主服务器使用,我为此使用心跳(LinuxHA 项目的一部分),但你可以使用你选择的操作系统的首选武器
- 配置要切换的 IP 的参数,这可能是网络故障、另一台机器死机或只是 MySQL 关闭
这种设置有很多优点,您可以通过将流量切换到另一个节点轻松地在一个节点上进行维护,并实现无忧恢复,您甚至不需要起床:)尽管有一个建议,但要明智地选择您的虚拟 IP 参数,否则您最终可能会发现两个节点都试图声明虚拟 IP,而这并不是理想的结果。
答案3
假设您有 2 个 MySQL 从属服务器:从属服务器 1 和从属服务器 2。万一主服务器宕机,您决定将从属服务器 1 提升为新的主服务器。我建议遵循以下程序:
确保所有从属服务器都已使用以下命令处理其中继日志中的所有语句:
mysql> STOP SLAVE IO_THREAD;
mysql> SHOW PROCESSLIST; to see `Has read all relay log` state.
在从属服务器 1 上,将其提升为主服务器:
mysql> STOP SLAVE;
mysql> RESET MASTER;
在从属服务器 2 上,使用以下命令指向新主服务器:
mysql> CHANGE MASTER TO MASTER_HOST='slave 1';
mysql> START SLAVE;
最后指示每个客户端将其语句发送给从属 1。
http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html