文档章节

mysql使用keepalived搭建双master

whaon
 whaon
发布于 2015/11/16 15:14
字数 511
阅读 690
收藏 16

这里的双master并不是2个都同时对应用开放写,只是同一个时刻只有1个mysql对外开放写,另一个作为slave接受从master同步过来的数据,当master挂掉后,通过keepalived的VIP转移,使slave变成master,从而形成高可用的环境

keepalived的master配置如下

vrrp_script mycheck {
       script "/usr/local/keepalived/shutdown.sh"
       interval 2                      # check every 2 seconds
       weight 2                        # default prio: +2 if connect ok
}

global_defs {
        router_id NodeA
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 151
    priority 201
    advert_int 1 
    nopreempt
    authentication {
        auth_type PASS
        auth_pass pass
    }
    virtual_ipaddress {
        192.168.0.100
    }
    track_script {
        mycheck
    }
}

slave配置如下:

vrrp_script mycheck {
       script "/usr/local/keepalived/shutdown.sh"
       interval 2                      # check every 2 seconds
       weight 2                        # default prio: +2 if connect ok
}

global_defs {
        router_id NodeB
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth1
    virtual_router_id 151
    priority 100
    advert_int 1
    nopreempt
    authentication {
        auth_type PASS
        auth_pass pass
    }
    virtual_ipaddress {
        192.168.0.100
    }
    track_script {
        mycheck
    }
}


几点要说明的:

1.配置成nopreempt表示非抢占,即master由挂掉的状态恢复后,并不抢占VIP,slave端继续提供服务

2.由于nopreempt只有BACKUP中支持,所以上面master和slave都配置成了BACKUP

3.VIP转移只有在keepalived挂掉的情况下才会出现(不一定,等会说明),也就是说机器宕机是可以的,但是mysql本身挂掉了并不能导致keepalived挂掉,所以要检测mysql是否挂掉

4.通过检测mysql占用端口,比如3306并不难严谨,检测mysql进程是否存在也不是很严谨,最好的办法应该是执行mysql的命令如下:

mysql -uroot -proot -h 192.168.0.47 --connect_timeout=5 -e "select 1;"
5.有时候即使keepalived进程不在了,但是VIP还存在,通过ipconfig可能看不到VIP,可以通过

ip -o -f inet addr show
就可以看到VIP还是存在的

所以为了保险起见最好加上:

ip addr del 192.168.0.100 dev eth1
删除VIP

6.数据同步那块可以依赖mysql自己,也可以使用ali的otter来进行同步

http://my.oschina.net/dxqr/blog/524795

https://github.com/alibaba/otter




© 著作权归作者所有

共有 人打赏支持
whaon

whaon

粉丝 47
博文 42
码字总数 38353
作品 0
厦门
程序员
私信 提问
基于keepalived搭建mysql双主高可用

目录 概述 环境准备 keepalived搭建 mysql搭建 mysql双主搭建 mysql双主高可用搭建 概述 传统(不借助中间件)的数据库主从搭建,如果主节点挂掉了,从节点只能读取无法写入,只能把人肉去恢复故障...

java_龙
2018/11/29
0
0
企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了。看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可。我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战...

superZS
2018/06/26
0
0
mysql5.7+keepalived1.3.5搭建热备服务器

1.规划 2.安装准备 mysql主从或者mysql双主,自行搭建这里不再赘述。 注:mysql与keepalived最好在同一台主机。mysql主从开启远程用户 3.keepalived安装 yum -y install keepalived 4.master...

zhuxtqw
2018/05/13
0
0
搭建mysql负载均衡及高可用环境

目标:使用两台主机实现 Mysql 的负载均衡及冗余,并做到双主互备; 环境:rhel5.8,mysql-5.0.77,keepalived-1.2.7,haproxy-1.4.20; 说明: keepalived 实现通过 vrrp协议,通过使一个虚拟I...

好雨知时节
2013/10/23
0
25
Mysql双主+keepalived实现HA

下面是从网上看到的Mysql双主+keepalived实现HA的介绍,搭建双主是没有问题的,问题在于如果互为主从的一台机器如果挂掉了,并且另外一台机器的数据还不是从库中最新的,那么这个时候就会出问...

伤得那么痛
2016/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
44分钟前
1
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
59分钟前
6
0
聊聊flink的AsyncWaitOperator

序 本文主要研究一下flink的AsyncWaitOperator AsyncWaitOperator flink-streaming-java_2.11-1.7.0-sources.jar!/org/apache/flink/streaming/api/operators/async/AsyncWaitOperator.java ......

go4it
今天
5
0
Java并发编程基础(四)

ThreadGroup 在主线程创建得线程,如果没有给他指定线程组,那么创建的线程,默认和主线程同一个线程组。线程组可以底下可以是线程,也可以实线程组。 构建线程组的方法: private ThreadGr...

chendom
今天
7
0
Scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部