当主服务器发生故障转移或烧毁时,如何实际使用 mysql 从服务器

当主服务器发生故障转移或烧毁时,如何实际使用 mysql 从服务器

我有 MySQL 主从复制,它运行良好;我搜索了整个网络和 MySQL 网站,想找到使用复制的标准程序,但一无所获。似乎管理员很乐意使用复制,但当需要执行灾难恢复时,没有将初始计划付诸实践并公开分享。

我想知道的是,如果主机损坏、烧毁等,如何让从机取代主机。我猜从机应该采用主机的网络地址,但还应该做什么?例如,更改 MySQL 用户权限或运行一些命令!如果有参考资料,请附上。

答案1

对于 DR 解决方案,您很可能需要一个半手动流程。也就是说,您需要确定灾难是否需要进行完整的 DR 故障转移,而不仅仅是网络故障,然后您需要花几天时间进行故障恢复工作。

要将 MySQL 从服务器切换为主服务器,只需在 mysql 中发出几个命令,可以找到 Mysql 详细信息这里

我强烈建议编写整个过程的脚本(并进行测试!)并添加您可能希望在机器上运行的任何其他命令以执行 DR 故障转移(重新启动 Web 层或任何其他需要的操作)。我们使用函数在管理服务器上运行我们应用程序所有层的故障转移命令。

当我提到灾难恢复时,我指的是站点故障。对于集群故障转移,事情应该是自动的,而且要简单得多。

答案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

相关内容