使用Maxscale实现mysql读写分离

MaxScale 是 MariaDB 的产品之一,可以很方便的实现读写分离方案;并且提供了读写分离的负载均衡和高可用性保障。

一、安装配置

前提:先配置好mysql的主从,Maxscale会根据主从复制信息来判断Master和slave

注:不能配置mysql互为主从,如果互为主从,两台都会被认为slave,在这种情况下,写请求会被拒绝,只接受读请求。

1.1.安装

官网下载对应的rpm包,

wget  https://downloads.mariadb.com/MaxScale/2.0.3/centos/6server/x86_64/maxscale-2.0.3-1.centos.6.x86_64.rpm
rpm -ivh maxscale-2.0.3-1.centos.6.x86_64.rpm

生成配置文件 /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

#监控配置
[MySQL Monitor] 
type=monitor
module=mysqlmon      #监控模块使用mysqlmon
servers=server1,server2
user=admin          #admin监控后端mysql的复制状况,必须具有REPLICATION CLIENT权限      
passwd=123456
monitor_interval=10000
script=/opt/mysql_monitor.sh    #定义事件触发脚本执行
events=master_down            #当master down时,执行上面的脚本

[Read-Write Service] 
type=service
router=readwritesplit       #读写分离路由模式
servers=server1,server2
user=maxscale    #该用户从后端mysql获取用户信息,对客户端进行身份验证,必须具有mysql.user table的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 #允许master down掉,slave仍然可读
#router_options=master_accept_reads=true      #允许master接受读请求

[Read-Write Listener] 
type=listener
service=Read-Write Service
protocol=MySQLClient
port=3306

#管理服务配置 
[MaxAdmin Service]
type=service
router=cli

#管理服务监听
[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default

二、管理

Maxscale提供了maxadmin命令用于查看管理

[[email protected] ~]# maxadmin  list -
Unknown or missing option for the list command. Valid sub-commands are:
    clients    List all the client connections to MaxScale
    dcbs       List all the DCBs active within MaxScale
    filters    List all the filters defined within MaxScale
    listeners  List all the listeners defined within MaxScale
    modules    List all currently loaded modules
    monitors   List all monitors
    services   List all the services defined within MaxScale
    servers    List all the servers defined within MaxScale
    sessions   List all the active sessions within MaxScale
    threads    List the status of the polling threads in MaxScale
[[email protected] ~]# maxadmin list servers
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 宕机的时候,取消slave的read_only属性,这样slave就会变成Master

2.使用高可用软件MMM

时间: 2024-10-02 18:10:51

使用Maxscale实现mysql读写分离的相关文章

采用Atlas实现MySQL读写分离

##采用Atlas实现MySQL读写分离 一.基础介绍 ========================================================================================== 1.背景描述 目前我们的高可用DB的代理层采用的是360开源的Atlas,从上线以来,已稳定运行2个多月.无论是从性能上,还是稳定性上, 相比其他开源组件(amoeba.cobar.MaxScale.MySQL-Proxy等),还是很出色的. 当初我们之所以选择

实现MySQL读写分离,MySQL性能调优

实现MySQL读写分离 1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服务的后端:另一台 192.168.4.100

Database基础(六):实现MySQL读写分离、MySQL性能调优

一.实现MySQL读写分离 目标: 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 方案: 使用4台RHEL 7.2虚拟机,如下图所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服务的后端:另一台 192.168.4.100作为MyS

实现MySQL读写分离 部署集群基础环境(有图)

实现MySQL读写分离 部署集群基础环境 1 实现MySQL读写分离1.1 问题 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台MySQL服务器来完成 其中Master服务器允许SQL查询.写入,Slave服务器只允许SQL查询 1.2 方案 使用4台RHEL 7.2虚拟机,如图-1所示.其中192.168.4.10.192.168.4.20分别作为MySQL主.从服务器,是整个服

专职DBA-基于MHA高可用搭建MySQL读写分离架构-Atlas

专职DBA-基于MHA高可用搭建MySQL读写分离架构-Atlas 1.Atlas介绍 Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目. 它是在mysql-proxy-0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性. 360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条. 下载地址:https://github.com/Qihoo360/Atlas/releases 注意: 1.Atlas只能安装运

mysql读写分离的三种实现方式

1 程序修改mysql操作类可以参考PHP实现的Mysql读写分离,阿权开始的本项目,以php程序解决此需求.优点:直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配缺点:自己维护更新,增减服务器在代码处理 2 amoeba参考官网:http://amoeba.meidusa.com/优点:直接实现读写分离和负载均衡,不用修改代码,有很灵活的数据解决方案缺点:自己分配账户,和后端数据库权限管理独立,权限处理不够灵活 3 mysql-proxy参考 mysql-proxy

mysql读写分离

mysql读写分离  静态分离:直接将服务器地址写入程序  动态分离:通过代理服务器对数据进行读写操作,由代理服务器判定读写操作,在主服务器上写数据,在          从服务器上读数据.    1.使用mysql-proxy实现读写分离  # ./mysql-proxy --proxy-backend-addresses=10.0.5.150:3306 --proxy-read-only-backend-addresses=10.0.5.151:3306 --proxy-lua-script

MySQL学习笔记之十:使用mysql-proxy实现MySQL读写分离

MySQL读写分离是指让master处理写操作,让slave处理读操作,非常适用于读操作量比较大的场景,可减轻master的压力. 本文使用mysql-proxy实现mysql的读写分离,mysql-proxy实际上是作为后端mysql主从服务器的代理,它直接接受客户端的请求,对SQL语句进行分析,判断出是读操作还是写操作,然后分发至对应的mysql服务器上.对于多节点slave集群,还可以起到负载均衡的效果. 一.准备实验环境 MySQL的主从复制架构搭建详见http://9124573.bl

Mysql-Proxy实现mysql读写分离、负载均衡 (转)

在mysql中实现读写分离.负载均衡,用Mysql-Proxy是很容易的事,不过大型处理对于性能方面还有待提高,主要配置步骤如下: 1.1. mysql-proxy安装 MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负 载平衡.对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可.当