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. Unity3D Shader入门指南(二)

    关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...

  2. Android UI系列-----时间、日期、Toasts和进度条Dialog

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内 ...

  3. 一个3D的多人在线游戏, 服务端 + 客户端 【转】

    最近学院组织了一个实训,要求是利用Socket通信和D3D的知识, 写一个多人在线的游戏, 服务端是在linux下, 客户是在Windows下: 写这个的目的是想让大家给我找错, 欢迎大家的意见.我的 ...

  4. Javascript 固定表格表头

    遇到一个简单的需求: 客户有一个表格可能有很多内容,当内容很多的时候,表格就会出现滚动条 客户希望当表格内容很多时,只滚动表格而不滚动浏览器窗口 在网上找到很多相关的插件,要不就是太复杂,要不就是满足 ...

  5. DIV实现CSS 的placeholder效果

    placeholder是HTML5中input的属性,但该属性并不支持除input以外的元素   但我们可以使用Css before选择器来实现完全相同的效果 <!DOCTYPE html> ...

  6. 【分享】分享一个压缩 PNG 的网站 TinyPNG

    TinyPNG 能做什么? TinyPNG 采用智能的有损压缩技术来减少你的 PNG 文件的文件大小.通过选择性地减少图像中的颜色数量,更少的字节用于存储数据.效果几乎是看不见的,但它在文件大小方面差 ...

  7. JAVA本地远程连接linux程序监控状态

    环境:  1.本地window 2.程序部署在centos   一,启动访问权限安全守护程序 新建文件:jstatd.all.policy ,注意路径 grant codebase "$JA ...

  8. 在Windows2008系统中利用IIS建立FTP服务器

    一.服务器管理器   1.2008的系统使用服务器管理器,选择角色,因为我之前已经开启了IIS服务器角色,所以我现在只要添加角色服务即可,如果你没有开启过的话,直接添加角色即可.   2.选择WEB服 ...

  9. PowerShell实现文件下载(类wget)

    对Linux熟悉的读者可能会对Linux通过wget下载文件有印象,这个工具功能很强大,在.NET环境下提到下载文件大多数人熟悉的是通过System.Net.WebClient进行下载,这个程序集能实 ...

  10. [LeetCode] Range Sum Query - Immutable

    The idea is fairly straightforward: create an array accu that stores the accumulated sum fornums suc ...