Keepalived+mysql实现高可用

项目环境:
VIP 192.168.122.100
mysql1 192.168.122.10
mysql2 192.168.122.20

一、mysql 主主同步        (不使用共享存储,数据保存本地存储)

1. mysql1 192.168.122.10:
   [[email protected] ~]# vim /etc/my.cnf
   log-bin=mysql-bin
   server-id  = 4
   [[email protected] ~]# service mysqld start
   [[email protected] ~]# mysql
   mysql> reset master;
   mysql> grant replication slave, replication client on *.*
       -> to [email protected]‘%‘ identified by ‘123‘;
   mysql> flush privileges;
   mysql> change master to
       -> master_host=‘192.168.122.20‘,
       -> master_user=‘admin‘,
       -> master_password=‘123‘,
       -> master_log_file=‘mysql-bin.000001‘,         //根据个人实际修改
       -> master_log_pos=0;                           //根据个人
   Query OK, 0 rows affected (0.02 sec)
   mysql> show slave status\G

2. mysql2 192.168.122.20:
   [[email protected] ~]# vim /etc/my.cnf
   log-bin=mysql-bin
   server-id  = 251
   [[email protected] ~]# service mysqld start
   [[email protected] ~]# mysql
   mysql> reset master;
   mysql> grant replication slave, replication client on *.*
       -> to [email protected]‘%‘ identified by ‘123‘;
   mysql> flush privileges;
   mysql> change master to
       -> master_host=‘192.168.122.10‘,
       -> master_user=‘admin‘,
       -> master_password=‘123‘,
       -> master_log_file=‘mysql-bin.000001‘,
       -> master_log_pos=0;
   Query OK, 0 rows affected (0.02 sec)
   mysql> show slave status\G

二、安装keepalived

[[email protected] ~]# yum -y install ipvsadm kernel-headers kernel-devel openssl-devel popt-devel
方法一:
源码安装keepalived
[[email protected] ~]# wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
[[email protected] ~]# tar zxvf keepalived-1.2.2.tar.gz
[[email protected] ~]# cd keepalived-1.2.2
[[email protected] ~]# ./configure --prefix=/                //安装到根下,防止目录太深
[[email protected] ~]# make
[[email protected] ~]# make install
方法二:
[[email protected] ~]# yum -y install keepalived

三、keepalived 主备配置文件

192.168.122.10 Master配置
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
=====================================================================
! Configuration File for keepalived

global_defs {
  router_id mysql1
}

vrrp_script check_run {
  script "/root/keepalived_check_mysql.sh"
  interval 5
}

vrrp_instance VI_1 {
   state MASTER
   interface eth0
   virtual_router_id 88
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass root
   }

track_script {
       check_run
   }

virtual_ipaddress {
       192.168.122.100
   }
}

192.168.122.20 Slave配置
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
=====================================================================
! Configuration File for keepalived

global_defs {
  router_id mysql2
}

vrrp_script check_run {
  script "/root/keepalived_check_mysql.sh"
  interval 5
}

vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 88
   priority 50
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass root
   }

track_script {
       check_run
   }

virtual_ipaddress {
       192.168.122.100
   }
}

1. 注意空格
2. 日志查看脚本是否被执行
[[email protected] ~]# tail -f /var/log/messages
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: Using LinkWatch kernel netlink reflector...
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: VRRP sockpool: [ifindex(2), proto(112), fd(11,12)]
Jun 19 15:20:19 xen1 Keepalived_vrrp[6341]: VRRP_Script(check_run) succeeded

四、mysql状态检测脚本/root/bin/keepalived_check_mysql.sh

[[email protected] ~]#  vim  /root/keepalived_check_mysql.sh
#!/bin/bash
MYSQL=/usr/local/mysql/bin/mysql
MYSQL_HOST=localhost
MYSQL_USER=root                      //连接mysql的用户名
MYSQL_PASSWORD=root                  //连接mysql的密码
CHECK_TIME=3

#mysql  is working MYSQL_OK is 1 , mysql down MYSQL_OK is 0
MYSQL_OK=1

check_mysql_helth (){
   $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p${MYSQL_PASSWORD} -e "show status;" &>/dev/null
   if [ $? -eq 0 ] ;then
    MYSQL_OK=1
   else
    MYSQL_OK=0
   fi
   return $MYSQL_OK
}

while [ $CHECK_TIME -ne 0 ]
do
    check_mysql_helth
if [ $MYSQL_OK -eq 1 ] ; then
    exit 0
fi

let CHECK_TIME--
sleep 1
done
/etc/init.d/keepalived stop
exit 1

[[email protected] ~]# chmod 755 /root/keepalived_check_mysql.sh

两边均启动keepalived
[[email protected] ~]# /etc/init.d/keepalived start
[[email protected] ~]# /etc/init.d/keepalived start
[[email protected] ~]# chkconfig --add keepalived
[[email protected] ~]# chkconfig keepalived on

五、测试及诊断
keepalived之间使用vrrp组播方式通信使用的IP地址是224.0.0.18

时间: 2024-12-12 04:14:05

Keepalived+mysql实现高可用的相关文章

搭建keepalived+mysql主从复制高可用

准备工作: 完成keepalived的安装 完成docker的安装 docker镜像里面自行安装iproute2, vim, iputils-ping(可选)等工具,便于测试 apt-get install iproute2 apt-get install vim apt-get install iputils-ping 主数据库master 1. 使用docker安装mysql mkdir -p ~/compose/mysql-master cd ~/compose/mysql-master

基于keepalived搭建MySQL的高可用集群

http://www.cnblogs.com/ivictor/p/5522383.html 基于keepalived搭建MySQL的高可用集群 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,MHA和PXC. 对于小公司,一般推荐使用keepalived+双主,简单. 下面来部署一下 配置环境: 角色                          

keepalived + haproxy + mysql 构建高可用数据库

keepalived + haproxy + mysql 构建高可用1.keepalived 的高可用是主备,有一台作为备用2.keepalived + haproxy 搭建的高可用是可以两台都会调度的高可用 拓扑图:keepalived:负责抢占虚拟ip,使用vrrp协议haproxy:负责做访问调度,减轻单点压力,单独监听一个端口,这里用23306 1.安装mysql分别在两台机器上面搭建mysql,并做主从配置,这里不做介绍2.搭建haproxy1.download 源码包,下载地址:ht

分布式数据存储 - MySQL主从复制高可用方案

前面几篇文章说道MySQL数据库的高可用方案主从复制.主从复制的延迟产生原因.延迟检测及延迟解决方案(并未从根本上解决),这种主从复制方案保证数据的冗余的同时可以做读写分离来分担系统压力但是并非是高可用方案,因为主从节点中主节点仍然是单点的,一旦主节点宕机会导致应用中写失败.双主复制虽然很好的避免主节点的单点故障,但是未提供统一访问入口来实现负载均衡,如果其中master宕掉的话需要手动切换到另外一个master,而不能自动进行切换.本篇文章就来剖析主从复制的高可用. 一.基础概念介绍 Keep

技术实战:基于 MHA 方式实现 MySQL 的高可用(转)

转自:http://os.51cto.com/art/201307/401702_all.htm MHA故障转移可以很好的帮我们解决从库数据的一致性问题,同时最大化挽回故障发生后的数据.本文分享了基于 MHA 方式实现 Mysql 的高可用的技术实战,希望对您有所帮助. AD:51CTO网+ 首届中国APP创新评选大赛火热招募中…… 数据的重要性对于人们来说重要程度不说自明,在信息时代,数据有着比人们更大的力量,我们也知道最近的斯诺登事件,军事专家对于他掌握的数据给出的评价是,相当于美军十个重装

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

MyCAT+MySQL 搭建高可用企业级数据库集群

第1章 课程介绍课程介绍1-1 MyCAT导学 试看1-2 课程介绍 第2章 MyCAT入门这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的,介绍如何以打包好的可执行程序的方式来启动MyCAT.以及如何对其相关的启动配置文件进行配置.2-1 章节综述2-2 什么是MyCAT2-3 什么是数据库中间层2-4 MyCAT的主要作用2-5 MyCAT基本元素2-6 MyCAT安装 第3章 MYCAT核心配置详解本章将对MyCAT的常用核心配置文件ser