mysql主主同步机制+keepalived实现MySQL高可用

一、概述

MySQL-HA目前有很多实现方案,今天就用MySQL双master+keepalived来实现MySQL-HA。

在MySQL-HA环境中,MySQL互为主从关系,这样就保证了两台MySQL数据的一致性。

然后用keepalived实现虚拟IP,通过keepalived来实现MySQL故障时自动切换。

二、实验环境

虚拟机 IP 操作系统 vCPU/个 内存/G 硬盘/G 虚拟IP
Mysql01 192.168.1.100 Ubuntu14.04 1 1 20 192.168.1.102
Mysql02 192.168.1.101 Ubuntu14.04 1 1 20

本测试参考文档:http://blog.csdn.net/ajaxuser/article/details/8453342

三、mysql-server-5.6安装

安装过程省略

四、配置Mysql双主架构

4.1、在两台服务器上同时创建用于“复制的账号”

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO [email protected]‘192.168.1.%‘ IDENTIFIED BY ‘1qaz#EDC‘;

说明:复制账户:copy_user   密码:1qaz#EDC

注意:需要在两台服务器上创建,IP地址请更改为实际的IP地址

4.2、更改配置文件

4.2.1、mysql01服务器配置

[email protected]:~# vim /etc/mysql/my.cnf

需修改的内容如下:

bind-address            = 0.0.0.0       #设为0.0.0.0,允许任意ip连接.

server-id               = 1

log_bin                 = /var/log/mysql/mysql-bin.log

relay_log               = /var/log/mysql/mysql-relay-bin

log_slave_updates       = 1

4.2.2、mysql02服务器配置

[email protected]:~# vim /etc/mysql/my.cnf

需修改的内容如下:

bind-address            = 0.0.0.0       #设为0.0.0.0,允许任意ip连接.

server-id               = 2

log_bin                 = /var/log/mysql/mysql-bin.log

relay_log               = /var/log/mysql/mysql-relay-bin

log_slave_updates       = 1

4.3、两台服务器进行重启mysql服务

/etc/init.d/mysql restart

4.4、在两台服务器上分别启动复制

4.4.1、mysql01配置

mysql> change master to master_host=‘192.168.1.101‘, master_user=‘copy_user‘, master_password=‘1qaz#EDC‘;

4.4.2、mysql02配置

mysql> change master to master_host=‘192.168.1.100‘, master_user=‘copy_user‘, master_password=‘1qaz#EDC‘;

4.5.1、mysql01启动从复制

mysql> start slave

4.5.2、mysql02启动从复制

mysql> start slave

4.6、在两台服务器上分别查看状态,都为yes表示配置成功

现在任何一个MySQL发生数据变化,另外一台数据库也会跟着进行数据更新。

五、配置keepalived

5.1、两台服务器分别安装keepalived

5.1.1、mysql01安装

5.1.2、mysql02安装

5.2、开始配置keepalived.conf配置文件

注意点1:该配置文件在/etc/keepalived目录下

注意点2:/etc/keepalived目录是安装keepalived时自动创建的

注意点3:keepalived.conf配置文件默认是不存在,则需要自己创建

5.2.1、在mysql01主机上创建和配置keepalived.conf

[email protected]:/etc/keepalived# vim keepalived.conf

5.2.2、在mysql02主机上创建和配置keepalived.conf

这台配置和上面基本一样,但有两个地方不同:优先级为90、real_server为本机IP

5.3、分别在两台服务器的/data/目录下编写检测服务down后所要执行的脚本mysql.sh

5.3.1、mysql01配置

[email protected]:~#mkdir /data

[email protected]:~#vim mysql.sh

[email protected]:~#chmod 777 mysql.sh

5.3.2、mysql02配置

[email protected]:~#mkdir /data

[email protected]:~#vim mysql.sh

[email protected]:~#chmod 777 mysql.sh

5.3.3、mysql.sh脚本说明

此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。另外,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP。

5.4、分别在两台主机上启动keepalived

5.4.1、mysql01主机

[email protected]:~#keepalived -D 或者 sudo keepalived start

5.4.2、mysql02主机

[email protected]:~#keepalived -D 或者 sudo keepalived start

5.5、进行测试

5.5.1、在物理机上ping虚拟IP

5.5.2、在mysql01主机上用top命令查看相关进程和资源占用情况

5.5.3、在mysql02主机上用top命令查看相关进程和资源占用情况

5.6、测试之谈

客户端用vip(192.168.1.102)连接MySQL(或者ping 192.168.1.102)

1.两台服务都正常工作的情况下,在两台服务器上分别用netstat -nat查看,

可以看出目前连接的是192.168.1.100,因为它的优先级高。此时100是活跃 的服务器,101是备用的服务器。

2.当100的mysql服务down掉的时候,keepalived可以完成故障切换,

这时候所有的新的mysql连接就会连接192.168.1.101。

同理,当101的MySQL服务down掉之后,所有的新的MySQL连接就会连接192.168.1.100。

3.当100修复之后,由于权重比较高,100还将会成为活跃的服务器,101将作为备用服务器。

当然可以在100(优先级较高的服务器)上设置nopreempt参数,将此服务器设置为不抢占,

这样就保证了在100服务修复之后,101继续担任活跃服务器的角色。

附件中有keepalived.conf文件

时间: 2024-11-07 19:10:42

mysql主主同步机制+keepalived实现MySQL高可用的相关文章

Nginx + Keepalived(主备模式)实现负载均衡高可用浅析

概述 目前关于负载均衡和高可用的架构方案能找到相当多且详尽的资料,此篇是自己学习相关内容的一个总结,防止将来遗忘再次重新查找资料,也避免踩相同的坑. 此次配置的负载均衡与高可用架构:Nginx + Keepalived(主备模式),Nginx 使用反向代理实现七层负载均衡. 众所周知,Nginx 是一款自由的.开源的.高性能HTTP服务器和反向代理服务器,也是一个IMAP.POP3.SMTP代理服务器. 也就是说Nginx本身就可以托管网站(类似于Tomcat一样),进行HTTP服务处理,也可以

MySQL/MariaDB基于MMM实现读写分离及高可用

前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的). MMM 优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepal

keepalived + nginx实现高可用

1. Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但是它一般不会单独出现,而是与其它负载均衡技术(如lvs.haproxy.nginx)一起工作来达到集群的高可用. 1.1 VRRP协议 VRRP全称 Virtual Router Redundancy Protocol,即 虚拟路由冗余协议.可以认为它是实现路由器高可用的容错协议,即将N台提供相同

LVS+Keepalived搭建MyCAT高可用负载均衡集群

LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR),十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). Keepalvied Keepalived在这里主要用作RealServer的健康状态检查以及Mast

Nginx+Keepalived实现站点高可用

Nginx+Keepalived实现站点高可用 Posted on 2015-05-18   |   In Linux, Nginx  |   15条评论 公司内部 OA 系统要做线上高可用,避免单点故障,所以计划使用2台虚拟机通过 Keepalived 工具来实现 nginx 的高可用(High Avaiability),达到一台nginx入口服务器宕机,另一台备机自动接管服务的效果.(nginx做反向代理,实现后端应用服务器的负载均衡)快速搭建请直接跳至 第2节. 1. Keepalived

RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡

原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. 目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR):十种调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). K

基于keepalived的Haproxy高可用配置

一.概述: HAProxy是一个用于4层或7层的高性能负载均衡软件,在大型网站的大型Web服务器群集中,HAProxy可用来替代专业的硬件负载均衡设备,节省大量的开支. 通常情况下,为了避免整个体系中出现单点故障,在至关重要的架构中,都需要部署备份设备,同样,负载均衡设备也不能部署单台,一旦主设备出现问题之后,备份设备可对主设备进行接管.实现不间断的服务,这便是Keepalived的作用. 于是,HAProxy和Keepalived的组合便成了省钱高效的Web服务器负载均衡架构. 拓扑图: 二.

HAProxy基于KeepAlived实现Web高可用及动静分离

    前言     软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载均衡.LVS是基于Linux操作系统实现的一种软负载,而Haproxy则是基于第三方应用实现的软负载.Haproxy相比LVS的使用要简单很多,但跟LVS一样,Haproxy自己并不能实现高可用,一旦Haprox节点故障,将会影响整个站点.本文是haprox基于keepalived实现web高可用及动静分离.     相关介绍         HAProxy     haproxy是一款提供

DNS+keepalived+lvs实现高可用负载均衡集群

1.目的: 部署两台lvs调度器并利用keepalived实现主主模型,DNS添加两条A记录指向lvs调度器实现轮询,最终实现高可用负载均衡集群效果 2.拓扑规划: 3.配置实践 (1)同步所有机器时间 在每台机器实行ntp同步: [[email protected] ~]# ntpdate 10.1.0.1 26 Oct 20:10:57 ntpdate[5533]: step time server 10.1.0.1 offset -32408.643564 sec (2)先配置RS,在RS