mysql-mmm、mysql-proxy、和keepalived的mysql高可用方案

Mysql-mmm就是mysql主主复制管理器,实现的功能有:

高可用性(类似keepalived的vip浮动技术)

同个时间只提供一台数据库写操作,保证数据库的一致性。

提升slave为master,延续双主的架构

首先先搭建好数据库主主,主从架构:类似图:(不再叙述)

在每台数据库中为monitor的机器来监控当前的同步情况:

Grant replivation client to ‘[email protected]’ip’ identified by ‘password’   创建一个mmm-monitor的账户,主要用于监控和同步

Grant super, replication client ,process on *.* to  ‘user’@’ip’ identified by ‘password’

创建一个mmm-agent的账户,用于客户端的各种操作

Mysql-mmm的下载地址为Mysql-mmm下载网址http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

由于使用的是epel的方式需要把/etc/yum.repos.d/epel.repo中的mirrorlist换为baseurl

===========================================================================

配置mmm_common.conf的文件:所有节点的配置都是一样的包括监控端

active_master_role      writer
 
<host default>
    cluster_interface       eth0
    pid_path                /var/run/mysql-mmm/mmm_agentd.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        ccd      //同步的账户
    replication_password    ccd
    agent_user              ccd       //大一点的权限
    agent_password          ccd
</host>
<host db1>
     ip 172.20.138.212
     mode master
     peer db2
</host>
<host db2>
  ip  172.20.138.209
  mode  master
  peer  db1
</host>
<role writer>
    hostsdb1,db2
    ips  172.20.138.100
    mode exclusive    //exclusive为单写
</role>
 
<role reader>
    Hosts b1,db2
    ips 172.20.138.250  //可以有多个ip,每个数据库可以单独有一个vip
    mode balanced    //读取为负载均衡
</role>

============================================================================

修改mmm_agent.conf文件中不同的db值

最后配置一下mmm_mon.conf

主要修改的地方有:

Ping_ips 为监控的主机的真实ip,

Monitor 修改为数据库赋予的账户

Monitor_assword   密码

在/etc/init.d/中启动服务,在监控服务器中输入命令:

Mmm_control checks 检查所有的数据库同步情况和运行情况

Mmm_control show 查看vip绑定情况,类似ipvsadm

Mysql-mmm不适合用于mysql主从的高负载

验证vip均可以跳转,但是发现读ip也具有写入数据的功能。。。。如果加上读写分离的话就可以实现读取的vip不具备写入的功能

Mysql-proxy实现负载均衡和读写分离

目前的mysql-proxy的版本为0.8.5aplha

在安装mysql-proxy之前需要安装lua

到官网下载lua的源文件

yum -y install readline-devel ncurses-devel

安装readline-devel和ncurses-devel   否则安装会出现readline寻找不到的问题

tar zxvf luaxxxxx

make linux

make install

这时候输入lua可以进入编译模式表示lua安装成功

安装所需要的依赖包

yum install gcc* gcc-c++* autoconf*automake* zlib* libxml* ncurses-devel* libmcrypt* libtool* flex* pkgconfig*

到mysql-proxy官网下载最新的mysql-proxy源文件

安装十分简单解压之后即可使用

将mysql-proxy添加到相对应的环境变量中

export PATH =$PATH:/usr/local/mysql-proxy

source /etc/profile

修改mysql-proxy的配置文件

常用的命令参数如下:

--daemon 以daemon的模式启动

--admin-address=:4401  默认端口为4401

-help查看所有命令

-default-file 可以配置启动的配置文件

--proxy-backend-addresses=$host:$port  多个以逗号隔开

--proxy-address=:3307

--proxy-backend-addresses=:3306  mysql主机的端口

--proxy-read-only-backend-address=xxx13306   只读mysql主机的端口

-- proxy-read-only-backend-address=xxx23306   可以指定多个只读mysql主机的端口

--proxy-lua-script=/usr/local/xxx/rw-splitting.lua   使用系统只带的lua脚本实现读写分离的功能

使用系统自带的rw.split.lua脚本需要修改两个参数

min_idle_connections=1

max_idle_connections = 3

启动脚本:

#!/bin/bash

mode=$1

if [ -z "$mode" ] ;then

mode="start"

fi

case $mode in

‘start‘)

mysql-proxy --daemon --proxy-address=:3307 --proxy-backend-addresses=172.20.138.209:3306;172.20.138.212:3306 --proxy-read-only-backend-addresses=172.20.138.212:3306  --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

;;

‘stop‘)

killall mysql-proxy

;;

esac

exit 0

或者使用配置方式的方法来启动

Vim /etc/mysql-proxy.cnf

admin-username = ccd

admin-password = ccd

daemon = true

keepalive = true

proxy-backend-addresses =172.20.138.209:3306;172.20.138.212:3306

proxy-read-only-backend-addresses =172.20.138.212:3306

proxy-lua-script =/usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua

admin-lua-script =/usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua

log-file = /usr/local/proxy-mysql/cn.log

log-level = debug

修改相对应的脚本即可:

Mysql-proxy –defaults-file =/etc/mysql-proxy.cnf

对于数据库的测试可以使用sysbench工具来进行测试

利用keepalived实现对mysql主主/主从的高可用

配置keepalived.conf文件:

Vrrp_instatance  HA_1{

State BACKUP  #配置为slave,也可以是master

Interface eth0

Virtual_router_id 80  //主从配置的虚拟路由标识需要一样

Priority 100  #配置不同的优先级

Advert_int 1   #配置主备之间同步检查的周期

Authenication{

Auth_type PASS

Auth_pass 1111

}

Virtual_ipaddress {

vip/24 dev eth0

}

}

Virtual_server  xxxxxx  3306{

Delay_loop 2

lb_algo wrr        //lvs算法为加权轮询

lb_kind DR     //lvs的模式为DR模式

protocol TCP

reall_server   xxxx 3306 {

weight  1

TCP_CHECK {

Connect_timeout  3

nb_get_retry    3

delay_before_retry  3

connect_port  3306

}

Real  server xxxx  3306{

同上

}

}

DR的real serverloop端口需要绑定vip的地址脚本为:

#!/bin/bash

SNS_VIP=172.138.20.244

./etc/rc.d/init.d/functions

case"$1" in

start)

ifconfig lo:0 $SNS_VIP netmask255.255.255.255 broadcast $SNS_VIP

/sbin/route add -host $SNS_VIP dev lo:0

echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2">/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p >/dev/null 2>&1

echo "RealServer Start OK"

;;

stop)

ifconfig lo:0 down

route del $SNS_VIP >/dev/null2>&1

echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0">/proc/sys/net/ipv4/conf/all/arp_announce

echo "RealServer Stoped"

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

exit 0

授权远程主机可以通过vip来连接登录vip

Grant allprivileges to  on *.* to xxxx identifiedby xxxxx

Flushprivileges

由此可以实现mysql数据库的高可用

使用keepalived的方式有两种 一种为keepalived加脚本实现vip的切换,另外一种是keepalived+lvs的方式来实现数据库的高可用

================================================================================

时间: 2024-11-24 11:13:00

mysql-mmm、mysql-proxy、和keepalived的mysql高可用方案的相关文章

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案

一.安装haproxy作为端口转发服务器(主服务器:172.28.5.4,备服务器:172.28.5.8,浮点IP为:172.28.5.6) 1.下载 cd /usr/local/src wget https://github.com/haproxy/haproxy/archive/v1.5-dev20.tar.gz 2.解压 tar - zvxf v1.5-dev20.tar.gz cd haproxy-1.5-dev20 3.编译 make TARGET=linux26 prefix=/us

keepalived+mysql双主复制高可用方案

MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换.而Keepalived通过虚拟IP,实现了双主对外的统一接口以及自动检查.失败切换机制.联合使用,可以实现MySQL数据库的高可用方案. 实验环境:OS:centos 6.x x86_64系统MySQL版本: :mysql 5.6.22   64 位A: master :192.168.79.3 3306B: slave :192.168.

MySQL主主复制+LVS+Keepalived实现MySQL高可用性

MySQL主主复制+LVS+Keepalived实现MySQL高可用性 MySQL复制能够保证数据的冗余的同时可以做读写分离来分担系统压力,如果是主主复制还可以很好的避免主节点的单点故障.但是MySQL主主复制存在一些问题无法满足我们的实际需要:未提供统一访问入口来实现负载均衡,如果其中master宕掉的话需要手动切换到另外一个master,而不能自动进行切换. 这篇文章下面要介绍如何通过LVS+Keepalived的方式来是实现MySQL的高可用性,同时解决以上问题. Keepalived和L

MySQL+Keepalived实现主主高可用方案

Mysql主主高可用方案 master配置 [[email protected] ~]# yum -y install keepalived [[email protected] ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived   global_defs {         router_id LVS_MASTER-A   } vrry_script mysql {         scrip

[转载] MySQL高可用方案选型参考

原文: http://imysql.com/2015/09/14/solutions-of-mysql-ha.shtml?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 本次专题是 MySQL高可用方案选型,这个专题想必有很多同学感兴趣. 高可用的意义以及各种不同高可用等级相应的停机时间我就不必多说了,直接进入主题. 可选MySQL高可用方案 MySQL的各种高可用方案,大多是基于以下几种基础来部署的: 基于主从复制:

五大常见的MySQL高可用方案【转】

1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. 用作备份.只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致. 当业务发生数据库切换时,切换前后的数据库内容应当一致,不会因为数据缺失或者数据不一致而影响业务. 关于对高可用的分级在这里我们不做详细的讨论,这里只讨论常用高可用方案的优缺点以及高可用方案的选型. 2. 高可用方

MySQL高可用方案选型参考

本次专题是 MySQL高可用方案选型,这个专题想必有很多同学感兴趣. 高可用的意义以及各种不同高可用等级相应的停机时间我就不必多说了,直接进入主题. 可选MySQL高可用方案 MySQL的各种高可用方案,大多是基于以下几种基础来部署的: 基于主从复制: 基于Galera协议: 基于NDB引擎: 基于中间件/proxy: 基于共享存储: 基于主机高可用: 在这些可选项中,最常见的就是基于主从复制的方案,其次是基于Galera的方案,我们重点说说这两种方案.其余几种方案在生产上用的并不多,我们只简单

10款常见MySQL高可用方案选型解读

原文地址 作者介绍 王松磊,现任职于UCloud,从事MySQL数据库内核研发工作.主要负责UCloud云数据库udb的内核故障排查工作以及数据库新特性的研发工作. 一.概述 我们在考虑MySQL数据库的高可用架构时,主要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. 用作备份.只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致. 当业务发生数据库切换时,切换前后的数据库内容应当一致

五大常见的MySQL高可用方案

1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 1.1 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. 1.2 用作备份.只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致. 1.3 当业务发生数据库切换时,切换前后的数据库内容应当一致,不会因为数据缺失或者数据不一致而影响业务. 关于对高可用的分级在这里我们不做详细的讨论,这里只讨论常用高可用方案的优缺点以及高可用方案

MySQL集群之五大常见的MySQL高可用方案(转)

1. 概述 我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断. 用作备份.只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致. 当业务发生数据库切换时,切换前后的数据库内容应当一致,不会因为数据缺失或者数据不一致而影响业务. 关于对高可用的分级在这里我们不做详细的讨论,这里只讨论常用高可用方案的优缺点以及高可用方案的选型. 2. 高可用方