首页 / 数据库 / MySQL / MySQL高可用方案几种方案
Mysql-mmm就是mysql主主复制管理器,实现的功能有: 高可用性(类似keepalived的vip浮动技术) 同个时间只提供一台数据库写操作,保证数据库的一致性。 提升slave为master,延续双主的架构 首先先搭建好数据库主主,主从架构:类似图:(不再叙述) 在每台数据库中为monitor的机器来监控当前的同步情况: Grant replivation client to ‘user@’ip’ identified by ‘password’ 创建一个mmm-monitor的账户,主要用于监控和同步 Grant super, replication client ,process on *.* to ‘user’@’ip’ identified by ‘password’ 创建一个mmm-agent的账户,用于客户端的各种操作 Mysql-mmm的下载地址为------------------------------------------分割线------------------------------------------免费下载地址在 http://linux.linuxidc.com/用户名与密码都是 www.linuxidc.com具体下载目录在 /2016年资料/2月/20日/MySQL高可用方案几种方案/下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm------------------------------------------分割线------------------------------------------由于使用的是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的方式来实现数据库的高可用MySQL高可用架构之MySQL-MMM配置详解 http://www.linuxidc.com/Linux/2015-08/121769.htmMySQL高可用性之Keepalived+MySQL(双主热备) http://www.linuxidc.com/Linux/2015-06/118767.htmMySQL高可用方案之集群(Cluster) http://www.linuxidc.com/Linux/2014-10/107887.htm使用KeepAlived搭建MySQL高可用环境 http://www.linuxidc.com/Linux/2014-08/105901.htmCentOS 6.4下MySQL高可用架构MHA搭建 http://www.linuxidc.com/Linux/2014-04/99983.htm本文永久更新链接地址
收藏该网址