读写分离mysql数据库mariadb_MariaDB MaxScale读写分离

MaxScale是MariaDB开发的一个数据库智能代理服务,一直看好的开源数据库MariaDB的又一利器。MaxScale允许根据数据库 SQL 语句将请求转向目标一个到多个服务器,可设定各种复杂程度的转向规则。MaxScale 设计用于透明的提供数据库的负载均衡和高可用性,同时提供高度可伸缩和灵活的架构,支持不同的协议和路由决策。简单的讲就是使用MaxScale可以轻松解决mariaDB读写分离的问题。下面PHP程序员雷雪松就详细的带大家一起看看MariaDB MaxScale实现读写分离的具体步骤。

MaxScale有五类插件:身份验证(Authentication)、协议(Protocol)、监控(Monitoring)、路由器(Router)、过滤(Filter),他们彼此相互配合一起工作来实现读写分离的。Protocol负责接口或从外部系统和maxscale协议方面,Monitoring来确定系统内的服务器发送请求的当前状态,Router则基于路由算法、服务器路由权重、服务器状态、可选的查询类型(读与写)和数据库模式的查询进行路由选择请求发送到后端哪里。Filter则可以自己编写一些小程序检查和修改SQL请求。通过一张图来让我们看一下MaxScale的工作原理。

d91e86201d3096505c737b178c60dbcb.png

MaxScale安装和配置:

MariaDB master为192.168.1.150

MariaDB slave为192.168.1.145

MariaDB的版本是10.1.16

[root@MariaDB soft]# rpm -ivh configure-maxscale-repo-0.1.2.rpm

Preparing... ########################################### [100%]

1:configure-maxscale-repo########################################### [100%]

[root@MariaDB soft]# yum install maxscale

#拷贝配置文件

[root@MariaDB etc]# pwd

/usr/local/mariadb-maxscale/etc

[root@MariaDB etc]# cp MaxScale_template.cnf maxscale.cnf

#定义MAXSCALE_HOME环境变量,或是加到/etc/profile文件中

[root@MariaDB etc]# export MAXSCALE_HOME=/usr/local/mariadb-maxscale

[root@MariaDB etc]# vi maxscale.cnf

#编辑配置文件maxscale.cnf

#定义读写路由器

[RW Split Router]

type=service

router=readwritesplit

servers=server2,server1

user=root

passwd=50514A05CE2C0909BA630B29A29D620D

enable_root_user=1

#use_sql_variables_in=

#max_slave_connections=100%

#max_slave_replication_lag=21

#router_options=slave_selection_criteria=

#filters=fetch|qla

#为该路由器定义一个listener

[RW Split Listener]

type=listener

service=RW Split Router

protocol=MySQLClient

port=4007

#socket=/tmp/rwsplit.sock

#定义服务器成员

[server1]

type=server

address=192.168.1.145

port=3307

protocol=MySQLBackend

[server2]

type=server

address=192.168.1.150

port=3306

protocol=MySQLBackend

password是一个加密的密文,maxscal使用该用户连接数据库

#生成密码文件,再加密

[root@MariaDB bin]# /usr/local/mariadb-maxscale/bin/maxkeys /usr/local/mariadb-maxscale/etc/.secrets

[root@MariaDB bin]# /usr/local/mariadb-maxscale/bin/maxpasswd root

50514A05CE2C0909BA630B29A29D620D

#启动maxscale,并以后台方式运行,查看端口是否正常打开,4007是连接 MaxScale 时使用的端口,6603是 MaxScale 管理器的端口,4442是MaxScale debug测试的端口

[root@MariaDB bin]# /usr/local/mariadb-maxscale/bin/maxscale --config=/usr/local/mariadb-maxscale/etc/maxscale.cnf

[root@MariaDB etc]# netstat -nltp | grep max

tcp 0 0 0.0.0.0:4007 0.0.0.0:* LISTEN 15153/maxscale

tcp 0 0 0.0.0.0:6603 0.0.0.0:* LISTEN 15153/maxscale

tcp 0 0 0.0.0.0:4442 0.0.0.0:* LISTEN 15153/maxscale

#使用管理工具连接,设置服务器状态

[root@MariaDB bin]# /usr/local/mariadb-maxscale/bin/maxadmin --user=admin --password=mariadb --host=127.0.0.1

#手动设定手服务器的状态

MaxScale> set server server1 slave

MaxScale> set server server2 master

MaxScale> list servers

Servers.

-------------------+-----------------+-------+-------------+--------------------

Server | Address | Port | Connections | Status

-------------------+-----------------+-------+-------------+--------------------

server1 | 192.168.1.145 | 3307 | 0 | Slave, Running

server2 | 192.168.1.150 | 3306 | 0 | Master, Running

-------------------+-----------------+-------+-------------+--------------------

这样就配置成功了可以实现读写分离,可以写一个select查询和update更新测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值