使用maxscale解决读压力大的问题

maxScale 解决读压力大的问题
1. 认证插件
提供数据库登录认证的功能
2. 协议插件
负责 maxscale和外部系统间接口的协议,包括客户端到maxscale的接口,以及maxscale 到后端数据库的接口
3. 路由插件
readconnroute 用来解决多台读服务器的负载均衡
readwritesplit 用来实现读写分离
4. 监控插件
用于对后端数据库进行实时监控,以便将前端请求发送到正确的(即正常的可以对外提供服务的)数据库中
5. 过滤和日志插件
提供了简单的数据库防火墙功能,可以对某些sql进行过滤和改写,可以进行一些简单的sql容错和语句的自动转换

=======================================================================

结构

maxscale  节点  192.168.182.131
master    db:  192.168.182.128
slave     db:   192.168.182.129
slave     db:   192.168.182.131

第一步:  安装 maxscale

wget https://downloads.mariadb.com/MaxScale/2.2.0/centos/7server/x86_64/maxscale-2.2.0-1.centos.7.x86_64.rpm
yum install gnutls libaio.x86_64 libaio-devel.x86_64 novacom-server.x86_64 libedit -y
rpm -ivh maxscale-2.2.0-1.centos.7.x86_64.rpm

第二步: 在 master 128 服务器中为 MaxScale 创建两个用户,用于监控模块和路由模块

1. 为监控模块创建mysql账号
mysql> create user scalemon@'192.168.182.%' identified by '123456';
mysql> grant replication slave,replication client on *.* to scalemon@'192.168.182.%';

2. 为路由模块创建mysql账号
用来读取mysql系统库下的表,获取后端数据库的权限
mysql> create user scaleroute@'192.168.182.%' identified by '123456';
mysql> grant select on  mysql.* to scaleroute@'192.168.182.%'; 

第三步: 配置文件中的密码都是经过maxscale进行加密后的,可以防止密码泄露,具体的操作步骤为

which maxkeys
maxkeys /var/lib/maxscale/
maxpasswd  /var/lib/maxscale/    123456

得到密码:66FE1F175EFAB5111B5639F254C301CE

第四步:修改 /etc/maxscale.cnf 配置文件

[maxscale]
threads=1    

[server1]
type=server
address=192.168.182.128
port=3306
protocol=MySQLBackend

[server2]
type=server
address=192.168.182.129
port=3306
protocol=MySQLBackend

[server3]
type=server
address=192.168.182.131
port=3306
protocol=MySQLBackend

[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2,server3
user=scalemon
passwd=867E4F171CFFEAA62AEF9376A95308BE
monitor_interval=10000

[Read-Write Service]
type=service
router=readwritesplit
servers=server1,server2,server3
user=scaleroute
passwd=867E4F171CFFEAA62AEF9376A95308BE
max_slave_connections=100%

[MaxAdmin Service]
type=service
router=cli

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

[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default

第五步:启动maxscale服务

maxscale -f /etc/maxscale.cnf

日志文件:/var/log/maxscale/maxscale.log

查看 MaxScale 的响应端口是否已经就绪

netstat -ntelp

maxscale的端口 4006

第六步:查看maxscale服务状态

maxadmin -S /tmp/maxadmin.sock

# 查看后端服务器列表
maxscale> list servers

 第七步:

在128(主库)上创建一个测试账号
mysql> grant all on *.* to scott@'%' identified by 'tiger';

在maxscale节点连接数据库
[root@monitor ~]# mysql -uscott -ptiger -h192.168.182.131 -P4006
注意这里的-h连接的maxscale节点,-P是maxscale的端口,如果maxscale与mysql client不在同一台机器,还需要关闭maxscale上的防火墙

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值