MaxScale是 MariaDB 的产品之一,可以很方便的实现读写分离方案;并且提供了读写分离的负载均衡和高可用性保障。
一、安装配置
前提:先配置好mysql的主从,Maxscale会自动的根据主从复制信息来判断Master和slave
注:不能配置mysql互为主从,如果互为主从,两台都会被认为slave,在这种情况下,写请求会被拒绝,只接受读请求。
1.1.安装
官网下载对应的rpm包,wget/MaxScale/2.0.3/centos/6server/x86_64/maxscale-2.0.3-1.centos.6.x86_64.rpm
rpm-ivhmaxscale-2.0.3-1.centos.6.x86_64.rpm
maxscale的配置文件为:/etc/maxscale.conf,配置文件由多个配置模块组成vi/etc/maxscale.conf
#全局配置:
[maxscale]
threads=auto
log_info=1
log_notice=1
log_warning=1
#后端mysql定义
[server1]
type=server
address=192.168.10.1
port=3306
protocol=MySQLBackend
[server2]
type=server
address=192.168.10.2
port=3306
protocol=MySQLBackend
#监控配置
[MySQLMonitor]
type=monitor
module=mysqlmon#监控模块默认使用mysqlmon,当然还有其他可选择的模块
servers=server1,server2
user=admin#admin监控后端mysql的复制状况,必须具有REPLICATIONCLIENT权限
passwd=123456
monitor_interval=10000
#触发器定义注意,以下两句的上下顺序不能变,不然无法生效
script=/opt/mysql_monitor.sh#定义事件触发脚本执行
events=master_down#事件触发器当masterdown时,执行上面的脚本,maxscale内置了很
多的events
#读写分离service
[Read-WriteService]
type=service
router=readwritesplit#读写分离路由模式
servers=server1,server2
user=maxscale#该用户从后端mysql获取用户信息,对客户端进行身份验证,必须具有mysql.usertable的select权限
passwd=maxscale
max_slave_connections=100%
max_slave_replication_lag=3600000#当slave的数据落后master小于3600秒时仍然可用
connection_timeout=300
router_options=master_failure_mode=error_on_write#允许masterdown掉,slave仍然可读
#router_options=master_accept_reads=true#允许master接受读请求
[Read-WriteListener]
type=listener
service=Read-WriteService
protocol=MySQLClient
port=3306
#管理服务配置
[MaxAdminService]
type=service
router=cli
#管理服务监听
[MaxAdminListener]
type=listener
service=MaxAdminService
protocol=maxscaled
socket=default
二、管理
Maxscale提供了maxadmin命令用于查看管理[root@server~]#maxadminlist-
Unknownormissingoptionforthelistcommand.Validsub-commandsare:
clientsListalltheclientconnectionstoMaxScale
dcbsListalltheDCBsactivewithinMaxScale
filtersListallthefiltersdefinedwithinMaxScale
listenersListallthelistenersdefinedwithinMaxScale
modulesListallcurrentlyloadedmodules
monitorsListallmonitors
servicesListalltheservicesdefinedwithinMaxScale
serversListalltheserversdefinedwithinMaxScale
sessionsListalltheactivesessionswithinMaxScale
threadsListthestatusofthepollingthreadsinMaxScale[root@server~]#maxadminlistservers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server|Address|Port|Connections|Status
-------------------+-----------------+-------+-------------+--------------------
server1|192.168.10.1|3306|0|Master,Running
server2|192.168.10.2|3306|0|Slave,Running
-------------------+-----------------+-------+-------------+--------------------
三、高可用性
Maxscale默认只提供读的高可用性,要实现写的高可用性,可以使用两种途径:
1.需要使用Multi-MasterMonitor监控模块,不同于上文使用的mysqlmon模块,该模块是通过read_only参数来选举Master和Slave,结合脚本可以实现在Master fail的时候,取消slave的read_only属性,将slave提升为Master
2.使用高可用软件MMM