转载于:http://www.itxuexiwang.com/a/shujukujishu/2016/0221/155.html?1456383602
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数据库的高可用性方案,并介绍其配置和实践。 首先,高可用方案的选择需要考虑具体的业务需求。例如,单点写入和主主同步是两种常见的业务场景。单点写入指的是所有的数据写入操作都...
支持通过自动分片支持读写扩展,通过实时备份冗余数据,是可用性较高的方案,声称可做到 99.999% 的可用性。 MySQL Cluster 的架构及实现原理主要由三种类型的服务组成: 1. NDB Management Server:管理服务器...
- **概念**:MySQL复制是一种通过将数据从一个服务器(称为“主服务器”)复制到一个或多个其他服务器(称为“从服务器”)来实现高可用性和容灾的技术。它通常采用异步复制模式。 - **优点**: - **提高可用性**:...
MySQL Cluster 是一种基于 Paxos 协议的高可用性集群解决方案,特别适合需要低延迟访问和高吞吐量的应用场景。配置 MySQL Cluster 需要经过以下几个步骤: 1. **配置集群节点**:包括配置 NDB 数据节点、SQL 服务...
选择哪种高可用性方案取决于业务需求、成本预算、技术能力以及对故障恢复速度的要求。MySQL Replication适合小规模、预算有限的场景,而MySQL Cluster更适合对高可用性要求极高的大型企业。MySQL+Heartbeat和DRBD...
MySQL高可用性和读写分离是数据库架构设计中的关键要素,以确保系统的稳定性和高效运行。在选择适合的解决方案时,需要结合公司的业务需求和技术环境进行评估。本文档将详细介绍两种常用的MySQL高可用和读负载均衡...
接下来将详细介绍几种常见的MySQL高可用架构,并分析其各自的特点: 1. **基于同步的高可用架构** - **软件**: Keepalive, Heartbeat, Redhat Cluster Site, MMM等。 - **特点**: 结构相对简单,易于管理,但需要...
MySQL高可用性解决方案MHA(Master High Availability)是一种在MySQL环境中实现主从复制故障自动切换的工具。MHA由两部分组成:MHA Manager和MHA Node。在给定的文件列表中,我们看到`mha4mysql-manager-0.56-0.el6...
MySQL高可用性主要通过以下几种技术实现: 1. **主从复制**:通过将数据从主服务器复制到一个或多个从服务器来实现数据冗余和负载均衡。 2. **读写分离**:通过将查询请求分发至不同的服务器来分散负载,提高性能。...
MySQL集群是一种用于提高数据库服务可用性和性能的技术,它通过分散数据和处理负载来实现这一目标。在本篇文章中,我们将探讨8种不同的MySQL集群方案,分析它们的特点、优缺点以及适用场景。 1. **MySQL主从复制...
MySQL-MHA(MySQL High Availability)是一种用于MySQL集群的高可用性解决方案,旨在提供数据库的自动故障切换和数据恢复功能。MHA是由Google开发并开源的一个工具,它结合了Master Heartbeat(心跳检测)和MySQL...
总结来说,MySQL的高可用性可以通过主从复制、半同步复制以及MHA等技术来实现。这些方案各有优劣,可以根据业务需求和数据安全性要求进行选择和组合,以构建高可用、高性能的数据库系统。在实际部署中,还需要考虑...
在本文中,我们将探讨几种常见的MySQL高可用架构及其应用实践。 首先,MySQL高可用架构通常包括客户端切换机制和数据同步策略。客户端切换是指在主节点故障时,自动将流量导向备用节点,确保服务不间断。这可以通过...
MySQL Cluster是MySQL数据库的一种高可用性解决方案,它通过数据分片(Sharding)和多节点复制来提供强一致性和高可用性。集群由管理节点(NDP)、数据节点(Data Node)和SQL节点(SQL Node)组成,各自负责不同的...
在构建高可用性系统时,Keepalived 和 MySQL 的结合使用是常见的解决方案,尤其是在数据库服务中,以确保数据的连续性和一致性。以下是关于这个主题的详细知识点: **1. Keepalived** Keepalived 是一个基于 VRRP...
MySQL Cluster主要由三种类型的节点构成:管理节点、数据节点和SQL节点,它们协同工作,共同保障系统的高可用性和高性能。 1. **数据节点(Data Nodes)**:这是系统的核心,负责存储所有数据以及进行数据的同步...
为了解决这些问题,人们通常采用高可用性和读写分离的架构。MyCat是一个开源的分布式数据库系统,它能实现MySQL的高可用读写分离,提升系统的并发处理能力和稳定性。 首先,我们要理解什么是读写分离。读写分离是...