MySQL master Failover

默北 MySQLMySQL master Failover已关闭评论9,573字数 1040阅读3分28秒阅读模式

MySQL数据库高可用性架构实现方式有:

1. mysql master / master replication + VIP 通过脚本来控制master切换, 如mmm和mha。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

具体内容参见: 《使用MMM实现MySQL Replication的高可用性》 https://www.ttlsa.com/html/1208.html 和《MMM—MySQL高可用性解决方案》 https://www.ttlsa.com/html/1404.html、《mysql-master-ha:mysql master高可用性管理工具https://www.ttlsa.com/html/310.html文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

结构图如下所示:文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

drbd文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

2. 共享存储文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

drbd文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

3. 块级别的复制文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

通常是使用分布式块设备复制DRBDhttps://www.ttlsa.com/html/707.html文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

drbd文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

那么如果是master - slave架构时,master挂掉了,该如何切换呢?文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

drbd文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

想必大家绝大多数的数据库应用是上图所示。 那么该注意些什么呢? 以及当master挂掉了该如何切换呢?文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

每台slave服务器上启动--lon-bin, 但是不要启动--log-slave-updates。因为指定--log-slave-updates后,slave从master接收到的更新都将写入到自己的二进制日志文件中。如果该台slave提升为master后,其他slave将接收两次原master的二进制日志,同时更不好确定pos值。在MySQL级联复制(A->B->C)情况下,--log-slave-updates一定要开起来,否则下游slave不会更新。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

切换步骤:文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

1. 登录到每台slave上文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

STOP SLAVE IO_THREAD,  SHOW PROCESSLIST 查看复制进程是否 Has read all relay log。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

2. 如果上一步都ok的话,随便选一台做如下操作。如选择slave1.文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

STOP SLAVE , RESET MASTER。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

3. 登录slave2和slave3,做如下操作文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

STOP SLAVE and CHANGE MASTER TO MASTER_HOST='Slave1', MASTER_USER='repl', MASTER_PASSWORD='www.ttlsa.com', MASTER_PORT=3306;文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-master-failover/

不需要指定slave1 的二进制日志文件和pos值。

start slave;

转载请注明来自运维生存时间:  https://www.ttlsa.com/html/3676.html

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 13/11/2013 19:58:28
  • 转载请务必保留本文链接:https://www.ttlsa.com/mysql/mysql-master-failover/