到这一步的时候, 是主备部署已经处理好, 请关注:mysql主备部署[高可用]

这次使用的是keepalived-1.2.22.tar.gz版, 官网地址:keeplived官网

笼统知识请自行查询百度下面开始步骤

第一步:安装keepalived-1.2.22

解压
tar -zxvf keepalived-1.2.22.tar.gz 编译
cd keepalived-1.2.22
./configure --prefix=/usr/local/keepalived/(新建文件夹喔)
安装
make && make install 服务脚本
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
配置文件
cp /usr/local/keepalived/etc/keepalived.conf /etc/keepalived/keepalived.conf
服务
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived 加入服务
chkconfig --add keepalived
chkconfig keepalived on service keepalived start #启动服务
service keepalived stop #停止服务
service keepalived restart #重启服务

上面的额操作主备机器都需要安装

第二步:配置文件

master:keepalived.conf

! Configuration File for keepalived

global_defs {
router_id HA_MySQL
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.88.88
}
} virtual_server 192.168.88.88 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.75.61 3306 {
weight 3
notify_down /etc/keepalived/down.sh
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}

slave:keepalived.conf

! Configuration File for keepalived

global_defs {
router_id HA_MySQL
} vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.88.88
}
} virtual_server 192.168.88.88 3306 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.75.62 3306 {
weight 3
# echo"62....1"
notify_down /etc/keepalived/down.sh
# notify_up /etc/keepalived/up.sh
# echo"62....2"
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}

down:down.sh

#!/bin/bash
pkill keepalived

第三步:测试

主:192.168.75.61
备:192.168.75.62 主:
[root@qwzs08 log]#service mysqld start
[root@qwzs08 log]#service keeplived start 保证已经启动成功!
[root@qwzs08 log]#ip addr 会显示出下面的vip(我上面配置文件把master放在61) 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ether 00:50:56:89:a3:28 brd ff:ff:ff:ff:ff:ff
inet 192.168.75.61/24 brd 192.168.75.255 scope global eth0
inet 192.168.88.88/32 scope global eth0
inet6 fe80::250:56ff:fe89:a328/64 scope link
valid_lft forever preferred_lft forever 表示vip正常 此时在备机
[root@qwzs07 log]#ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ether 00:50:56:89:cb:a6 brd ff:ff:ff:ff:ff:ff
inet 192.168.75.62/24 brd 192.168.75.255 scope global eth0
inet6 fe80::250:56ff:fe89:cba6/64 scope link
valid_lft forever preferred_lft forever 是没有vip的, 恭喜您!配置成功!

第四步:漂移

模拟主机宕机
ps aux | grep mysqld root 1176 0.0 0.0 11336 1408 ? S 15:38 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/mysql3306.pid
mysql 1591 7.1 1.8 2736136 597708 ? Sl 15:38 3:19 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/mysql3306.err --pid-file=/usr/local/mysql/data/mysql3306.pid
root 1978 0.0 0.0 103248 844 pts/0 S+ 16:24 0:00 grep mysql kill -9 1176 1591 此时,主机的mysql挂掉了,您怎么确定是有没有漂移呢?
查一下vip
ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ether 00:50:56:89:cb:a6 brd ff:ff:ff:ff:ff:ff
inet 192.168.75.61/24 brd 192.168.75.255 scope global eth0
inet6 fe80::250:56ff:fe89:cba6/64 scope link
valid_lft forever preferred_lft forever 已经没有了
再去备机查一下vip
ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
link/ether 00:50:56:89:a3:28 brd ff:ff:ff:ff:ff:ff
inet 192.168.75.62/24 brd 192.168.75.255 scope global eth0
inet 192.168.88.88/32 scope global eth0
inet6 fe80::250:56ff:fe89:a328/64 scope link
valid_lft forever preferred_lft forever look, 漂过来了 现在切换到主机把的mysql和keeplived开启 此时主机的服务已经开起来了, 但是vip并没有漂过去, 这就是nopreempt的作用, 防止脑裂 这时候加入备机slave挂掉, vip就会漂移到主机master, 实现高可用主从切换

此时如果能实现漂移就是成功了, 下面是我遇到的问题

1.keepalived执行后日志狂刷, 2.脚本并没有执行(down.sh),具体情况就是mysql挂掉后,keeplived并没有自杀,导致vip漂移失败, 但是手动关闭keeplived后会实现漂移, 原因就在于down脚本没有得到执行。

日志报错:

Nov 21 16:05:27 qwzs08 abrt[13378]: Not saving repeating crash in '/usr/sbin/keepalived'
Nov 21 16:05:27 qwzs08 Keepalived_healthcheckers: IPVS: Can't initialize ipvs: Protocol not available
Nov 21 16:05:27 qwzs08 Keepalived_healthcheckers: Netlink reflector reports IP 192.168.75.62 added
Nov 21 16:05:27 qwzs08 Keepalived_healthcheckers: Netlink reflector reports IP 192.168.75.62 added
Nov 21 16:05:27 qwzs08 Keepalived_healthcheckers: Registering Kernel netlink reflector
Nov 21 16:05:27 qwzs08 Keepalived_healthcheckers: Registering Kernel netlink command channel
Nov 21 16:05:27 qwzs08 Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Nov 21 16:05:27 qwzs08 Keepalived_healthcheckers: Configuration is using : 9635 Bytes

很纠结,经过排查,原因是ip_vs模块系统默认没有自动加载

执行命令:

查看
lsmod | grep ip_vs
(如果没有任何输出则表示ip_vs模块并没有被内核加载) 手动加载
modprobe ip_vs modprobe ip_vs_wrr

然后再看日志已经恢复正常

此时再查看ip_vs

lsmod | grep ip_vs 
ip_vs_wrr               2179  1
ip_vs 115643 3 ip_vs_wrr
libcrc32c 1246 1 ip_vs
ipv6 321422 68 ip_vs,ip6t_REJECT,nf_conntrack_ipv6,nf_defrag_ipv6

ok!

mysql主备切换[高可用]的更多相关文章

  1. mysql主备部署[高可用]

    配置方案 master:192.168.99.61 service-id:61 slave:192.168.99.62 service-id:62同步账号:sync   同步密码:sync 主:192 ...

  2. mysql主备切换canal出现的问题解析

    通过配置VIP,在进行主备切换时,出现的报错信息: 1.当主备节点当前binlog文件名称相同时,原主节点的position小于主备切换后的position,出现如下报错: 2020-07-02 15 ...

  3. KeepAlived主备模型高可用LVS

    部署前准备: 1.至少4台主机:两个Director(HA1,HA2),两个Real Server(RS1,RS2) 2.Director之间时间必须同步,且关闭各主机的防火墙和Selinux 3.出 ...

  4. 25 | MySQL是怎么保证高可用的?

    在上一篇文章中,我和你介绍了binlog的基本内容,在一个主备关系中,每个备库接收主库的binlog并执行. 正常情况下,只要主库执行更新生成的所有binlog,都可以传到备库并被正确地执行,备库就能 ...

  5. Mysql双主互备+keeplived高可用架构介绍

    一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...

  6. Mysql双主互备+keeplived高可用架构(部分)

    一.Mysql双主互备+keeplived高可用架构介绍 Mysql主从复制架构可以在很大程度保证Mysql的高可用,在一主多从的架构中还可以利用读写分离将读操作分配到从库中,减轻主库压力.但是在这种 ...

  7. mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离

    数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...

  8. Mysql双主双从高可用集群的搭建且与MyCat进行整合

    1.概述 老话说的好:瞻前顾后.患得患失只会让我们失败,下定决心,干就完了. 言归正传,之前我们聊了Mysql的一主一从读写分离集群的搭建,虽然一主一从或一主多从集群解决了并发读的问题,但由于主节点只 ...

  9. MySQL 复制 - 性能与扩展性的基石 4:主备切换

    一旦使用 MySQL 的复制功能,就很大可能会碰到主备切换的情况.也许是为了迭代升级服务器,或者是主库出现问题时,将一台备库转换成主库,或者只是希望重新分配容量.不过出于什么原因,都需要将新主库的信息 ...

随机推荐

  1. int float 的具体的取值范围取决于具体的机器 整数除法舍位 整形(int)也可以用于存储字符型数据

    int  通常为16位  存储单元 float  通常为32位 取决于具体的机器 #include main() { int fathr,celsius; int lower,upper,step; ...

  2. 开启 NFS 文件系统提升 Vagrant 共享目录的性能

    Vagrant 默认的 VirtualBox 共享目录方式读写性能表现并不好,好在 Vagrant 支持 NFS 文件系统方式的共享,我们可以启用 NFS 提升性能 开启方法 首先要把虚拟机的网络设置 ...

  3. 2018/04/16 PHP 设计模式之工厂模式

    学习设计模式一定要知道它是为了什么而产生的,凡事一定有原因. 站在巨人的肩膀上学习,推荐两篇文章 什么是php工厂模式?为何要用php工厂模式? php工厂模式的使用实例总结 PHP设计模式之工厂模式 ...

  4. 2018/04/03 每日一个Linux命令 之 lastb/last

    今天还在想暴力破解一个服务器是怎么完成的....... -- lastb功能说明:列出登录系统失败的用户相关信息. -- 单独执行 lastb 时候,它会读取/var/log 下的 btmp 文件,输 ...

  5. linux平台mysql密码设破解

    1.先停止mysql服务 service mysqld stop 2.启动mysql服务 并跳过权限认证 mysqld_safe --skip-grant-tables 3.打开另外一个终端 登录my ...

  6. dedecms手机站图片错误的解决方法

    现在手机站(如m.*.com)是网站建设标配,在用dedecms建站也可以实现(不会的话欢迎来骚扰ytkah),手机站一个比较麻烦的事是图片一直显示不出来,为什么呢?程序一般是调用图片的相对地址,比如 ...

  7. iOS入门怎样选择Swift和objective-c

    版权声明:本文为博主原创文章,未经博主同意不得转载.博主微信:lofocus https://blog.csdn.net/cuibo1123/article/details/28261795 学oc吧 ...

  8. (转)How to Use Elasticsearch, Logstash, and Kibana to Manage MySQL Logs

    A comprehensive log management and analysis strategy is vital, enabling organizations to understand ...

  9. spfa 判断负环 (转载)

    当然,对于Spfa判负环,实际上还有优化:就是把判断单个点的入队次数大于n改为:如果总的点入队次数大于所有点两倍 时有负环,或者单个点的入队次数大于sqrt(点数)有负环.这样时间复杂度就降了很多了. ...

  10. HDU1203:I NEED A OFFER!(01背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=1203 Problem Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准 ...