host1与host3互为主从,即host1为host3的主机,同时也为host3的从机
 
host1 192.168.203.131
host2 192.168.203.132
host3 192.168.203.133
 
1.安装keepalived
www.keepalived.org
 
2.注意先清空防火墙
iptalbles -F
 
3.配置host1与host3互为主从并授权给host2上的登陆
grant all on *.* to 'replmonitor'@'192.168.203.%' identified by '000000' with grant option;
 
4.配置keealived.conf
! Configuration File for keepalived
host1上:
global_defs {
notification_email {
root@localhost.localdomain
}
notification_email_from root@localhost.localdomain
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id test-mysql-ha
}
vrrp_instance VI_1 {
state BACKUP
interface eth3 !当前机器的网络接口名称
virtual_router_id 51
priority 100 !优先级别
nopreempt !重启后也不要拿回主服务权限
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.203.200 !虚拟ip地址,等会在host2上登陆用此ip
}
}
virtual_server 192.168.203.200 3306 { !此端口即为mysql的服务
delay_loop 1
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.203.131 3306 { !主机的ip地址
weight 1
notify_down /etc/keepalived/mysql.sh
TCP_CHECK {
connect_timeout 10
bingto 192.168.203.200
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
host3上只需将上面加黑的部分做相应的更改并去掉nopreempt 即可
/etc/keepalived/mysql.sh的内容为:
#!/bin/bash
pkill keepalived
 
5.host1与host3开启keepalived,在host2上执行登陆mysql -h 192.168.203.200 -ureplmonitor -p (此host为虚拟的ip地址)
 /etc/init.d/keepalived start
 
6.开始测试,我们将host1上的mysql停止
[root@host1 keepalived]# /etc/init.d/mysql stop
Shutting down MySQL............ SUCCESS!
[root@host1 keepalived]# ps -ef | grep keepalived
root      5409  5115  0 00:51 pts/2    00:00:00 grep keepalived
 
在host3上查询可知host3已经接管过虚拟的主机
 
我们继续在host2上执行操作语句 
 
会首先提示连接失败并重新连接,并得到查询结果,故障失效迁移成功
 
7.在host3上执行:
mysql> delete from t1 where id in(4,5,6);
Query OK, 3 rows affected (0.01 sec) 在host1上重新开启mysql
mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 4 |
| 5 |
| 6 |
+------+
5 rows in set (0.00 sec) mysql> start slave;
Query OK, 0 rows affected (0.03 sec) mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec) 数据全部同步过来,再停掉host3上的mysql,在host1上插入一行数据:
mysql> insert into t1 values(3);
在host2上进行查询:
mysql> select * from testdb.t1;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 5
Current database: *** NONE *** mysql> select * from testdb.t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
可见数据也过来了,keepalive可以进行高效的数据迁移工作。
 
 

MySQL+Keepalived实现双机HA的更多相关文章

  1. PostgreSQL+pgpooll+Keepalived双机HA方案

    PostgreSQL+pgpooll+Keepalived双机HA方案 (注:本文档中的所有操作在没有说明的情况下都应该使用postgres用户进行操作,postgres用户没有权限的操作方可采用ro ...

  2. mysql+keepalived 双主热备高可用

    理论介绍:我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互 ...

  3. Mysql+Keepalived双主热备高可用操作记录

    我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...

  4. 使用keepalived实现双机热备

    通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.下面来以keepalived结合tom ...

  5. keepalived+nginx双机热备+负载均衡

    Reference: http://blog.csdn.net/e421083458/article/details/30092795 keepalived+nginx双机热备+负载均衡 最近因业务扩 ...

  6. Keepalived + haproxy双机高可用方案

    上一篇文章已经讲到了keepalived实现双机热备,且遗留了一个问题 master的网络不通的时候,可以立即切换到slave,但是如果只是master上的应用出现问题的时候,是不会 主动切换的. 上 ...

  7. [转帖]【MySQL+keepalived】用keepalived实现MySQL主主模式的高可用

    [MySQL+keepalived]用keepalived实现MySQL主主模式的高可用 https://www.jianshu.com/p/8694d07595bc 一.实验说明 MySQL主主模式 ...

  8. Oracle Compute云快速搭建MySQL Keepalived高可用架构

    最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户 ...

  9. MySQL 5.6 双机热备windows7

    MySQL 5.6 双机热备 目录: 1.说明 2.数据手工同步 3.修改主数据库配置文件 4.修改从数据库配置文件 5.主数据库添加备份用户 6.从数据库设置为Slave 7.验证 1.说明 1)数 ...

随机推荐

  1. Sql server Always On 读写分离配置方法

    使用了Sqlserver 2012 Always on技术后,假如采用的配置是默认配置,会出现Primary server CPU很高的情况发生,比如默认配置如下: 需要自定义来解决这个问题. 我们先 ...

  2. .NET错误The 'targetFramework' attribute in the <compilation> element of the Web.config file is used only to target version 4.0 and later of the .NET Framework

    错误描述: The 'targetFramework' attribute in the <compilation> element of the Web.config file is u ...

  3. 在Linq to Entity 中使用lambda表达式来实现Left Join和Join

    1.读取用户和部门两个表的左连接: var sg = db.Users.GroupJoin(db.Departments, u => u.DepartmentId, d => d.Depa ...

  4. Python的Descriptor和Property混用

    一句话,把Property和Descriptor作用在同一个名字上,就只有Property好使.

  5. worksteal thread pool

    worksteal的场景 对于一个线程池,每个线程有一个队列,想象这种场景,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,现象就是有的线程处于饥饿状态,而有的线程处于消化不良的状态 ...

  6. UFT\QTP 12 新特性

    UFT\QTP 12 新特性 http://blog.csdn.net/testing_is_believing/article/details/22310297

  7. 视觉SLAM中的数学基础 第四篇 李群与李代数(2)

    前言 理解李群与李代数,是理解许多SLAM中关键问题的基础.本讲我们继续介绍李群李代数的相关知识,重点放在李群李代数的微积分上,这对解决姿态估计问题具有重要意义. 回顾 为了描述三维空间里的运动,我们 ...

  8. VC6.0 error LNK2001: unresolved external symbol _main解决办法

    学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过.产生连接错误的原因非常多,尤其LNK2001错误 ...

  9. 一个基于POP3协议进行邮箱账号验证的类

    最近老陈要针对企业邮箱做一些开发,以对接企业OA神马的,但企业邮箱唯独没有开放账号密码验证功能,很恼火!不得已,翻出早些年的Asp代码改编成了C#类,实现了一个C#下的通过POP3协议进行邮箱账号验证 ...

  10. ireport 导出工具类

    Ireport 报表导出 Poi + ireport 导出pdf, word ,excel ,html 格式 下面是报表导出工具类 Ireport 报表导出 Poi + ireport 导出pdf,  ...