MySQL+Keepalived实现双机HA

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停止

[[email protected] keepalived]# /etc/init.d/mysql stop
Shutting down MySQL............ SUCCESS!
[[email protected] 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可以进行高效的数据迁移工作。

时间: 2024-08-10 23:30:58

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

MySQL+Keepalived实现双机热备

Keepalived双机热备 一.概述: keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为m

Centos7+Mariadb+Keepalived实现Mariadb(MYSQL)的高可用(HA)

我们前面几篇文章中有介绍了Keepalived的功能--HA,关于MySQL-HA,目前有多种解决方案,比如heartbeat.drbd.mmm.共享存储,但是它们各有优缺点.heartbeat.drbd配置较为复杂,需要自己写脚本才能实现MySQL自动切换,对于不会脚本语言的人来说,这无疑是一种脑裂问题:对于mmm,生产环境中很少有人用,且mmm 管理端需要单独运行一台服务器上,要是想实现高可用,就得对mmm管理端做HA,这样无疑又增加了硬件开支:对于共享存储,个人觉得MySQL数据还是放在本

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

keepalived+nginx双机热备+负载均衡 最近因业务扩展,需要将当前的apache 转为nginx(web), 再在web前端放置nginx(负载均衡).同时结合keepalived 对前端nginx实现HA. nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都

mysql+keepalived 双主热备高可用

理论介绍:我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查.失败切换机制,从而实现MySQL数据库的高可用方案. 环境说明:版本 version

实现keepalived + tomcat 双机热备

1.安装keepalived 我这里是给予keepalived+mysql 主主双机热备基础上做的 global_defs { router_id HA_MySQL } vrrp_instance VI_1 { state BACKUP interface bond0 virtual_router_id 51 priority 100 advert_int 1 nopreempt authentication { auth_type PASS auth_pass 1111 } virtual_i

Mysql+Keepalived双主热备高可用操作步骤详细解析

mysql+keepalived双主热备高可用的介绍: 我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.使用Keepalived,可以通过虚拟IP,实现双主对外的统一接口以及自动检查.失败切换机制,从而实现MySQL数据库的

利用Keepalived实现双机热备详解

在这个高度信息化的IT时代,企业的生产系统.业务运营.销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的.不间断的计算机系统或网络服务. 一.Keepalived双机热备基础知识 1.Keepalived概述 Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能--判断LVS负载调度器.节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集. Keepaliv

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

[MySQL+keepalived]用keepalived实现MySQL主主模式的高可用 https://www.jianshu.com/p/8694d07595bc 一.实验说明 MySQL主主模式,是两台MySQL数据库互为主从. 此实验是用keepalived实现MySQL主主模式的高可用,基于已经安装好了主主架构的MySQL,然后配置keepalived,验证高可用性! 二.实验环境 操作系统:CentOS 7.5 serverA:192.168.1.104 serverB: 192.1

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

最近有个客户在测试Oracle Compute云,他们的应用需要使用MySQL数据库,由于是企业级应用一定要考虑高可用架构,因此有需求要在Oracle Compute云上搭建MySQL高可用集群.客户根据自身的技术储备想要使用Keepalived组件来配合MySQL实现.今天结合Oracle Compute刚刚宣布terraform支持的架构即代码方式,交付给客户一个快速搭建MySQL+Keepalived高可用架构,来帮助他们快速搭建测试环境甚至将来使用到正式环境. MySQL主主复制模式 M