Maxscale介绍和应用
本博文演示环境:
centos7.2 x86_64 最小化安装。3台vm 时间同步,关闭iptables,selinux.,firewalld.
3台rpm包安装MariaDB10.5.1 。172.16.0.130机器单独安装 maxscale-2.3.7
一.Maxscale简单介绍:
如何配置MariaDB MaxScale,并介绍了一些可能的使用方案。 MariaDB MaxScale在设计时考虑了灵活性,它由事件处理核心和各种支持功能以及可定制程序行为的插件模块组成
MariaDB MaxScale是一种数据库代理,可扩展MariaDB Server的高可用性,可伸缩性和安全性,同时通过将其与基础数据库基础架构分离来简化应用程序开发。
MariaDB MaxScale采用可扩展的体系结构进行工程设计,以支持插件,从而将其功能扩展到透明负载平衡之外,从而成为例如数据库防火墙。
借助用于多个路由器,过滤器和协议的内置插件,可以将MariaDB MaxScale配置为转发数据库请求并根据业务和技术要求修改数据库响应,例如,以屏蔽敏感数据或扩展读取
MariaDB MaxScale是一种数据库代理,可将数据库语句转发到一个或多个数据库服务器。
使用基于数据库语句的语义理解以及数据库后端集群中服务器的角色的规则执行转发。
MariaDB MaxScale旨在向应用程序透明地提供负载平衡和高可用功能。
MariaDB MaxScale具有可扩展且灵活的体系结构,其插件组件可支持不同的协议和路由方法
MariaDB MaxScale充分利用了Linux操作系统的异步I / O功能以及固定数量的工作线程。
epoll用于为通过套接字的输入和输出提供事件驱动的框架。
MariaDB MaxScale提供的许多服务都实现为在运行时加载的外部共享对象模块。
这些模块支持固定接口,并通过由一组功能指针组成的结构传递入口点。该结构称为“模块对象”。可以创建其他模块以与MariaDB MaxScale一起使用。
常用的模块类型是协议,路由器和过滤器。协议模块实现了客户端与MariaDB MaxScale之间以及MariaDB MaxScale与后端服务器之间的通信。
路由器检查来自客户端的查询并确定目标后端。这些决定通常基于路由规则和后端服务器状态。
过滤器对通过MariaDB MaxScale传递的数据进行处理。
筛选器通常用于记录查询或修改服务器响应。
二.Maxscale 安装:
支持源码包编译安装,支持rpm包安装,也支持二进制tar包安装
官方安装文档:
提问地址:
https://github.com/mariadb-corporation/MaxScale/tree/2.3/Documentation
反馈bug地址:
https://jira.mariadb.org/browse/MXS
本演示环境安装的是maxscale 是2.3.7 ,下面是官方的安装文档介绍
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-installation-guide/
本博文采用的是rpm包安装,最简单
三.配置文件介绍:
默认配置文件在/etc/maxscale.cnf
官方模块参数介绍地址:
https://mariadb.com/kb/en/mariadb-maxscale-23-contents/#routers
配置文件参数介绍:
https://mariadb.com/kb/en/mariadb-maxscale-23-mariadb-maxscale-configuration-usage-scenarios/
在名为[MaxScale]的部分中的全局设置允许调整影响整个MariaDB MaxScale的各种参数。此部分必须在默认为/etc/maxscale.cnf的根配置文件中定义
参数:threads 介绍:threads=[<number of threads> | auto ] 默认是1,最好是根据实际需要来调整
将工作线程数量增加到超过处理器内核数量并不会提高性能,反而可能降低性能,并且可能不必要地消耗资源。
演示成功的配置文件内容:
四.提前配置好Mariadb 1主2从:
4.1配置基于gitd的主从复制
注意:在配置主从复制时,maxscale监控集群不识别主机名,只识别ip地址
所以在 CHANGE MASTER TO MASTER_HOST='172.16.0.130',MASTER_PORT=3306,MASTER_USER='repuser',MASTER_PASSWORD='JuwoSdk21TbUser',master_use_gtid=slave_pos;start slave;show slave status\G 时,记得MASTER_HOST必须填写ip地址,
否则会导致监控主从复制集群失败。
例如slave上:
** Master, Slave of External Server, Running 像这样的代表监控主从复制集群关系失败**。
Slave of External Server, Running
例如slave上:
以上status代表正常
4.2 数据库账户创建和授权:
**1.监控后端mysql服务的状态
2.复制集群操作(failover,switchover,rejoin,reset-replication)
**
要求监视用户具有以下特权:
权限作用介绍:
授权注意事项:
五.读写分离配置和测试:
创建读写分离操作后端mysql服务的账户:
创建测试用户:
读写分离配置:
https://mariadb.com/kb/en/mariadb-maxscale-23-readwritesplit/#readwritesplit
读写分割路由决策:
下面的动作会被路由到master上:
如果用max_slave_replication_lag参数配置了readwritesplit服务,并且如果所有从属服务器都遭受过多的复制滞后,则语句将被路由到主服务器或者其他的slave上。
加入设定为:max_slave_replication_lag=4
#指定从站被允许落后于主站多少秒。如果滞后时间大于配置的值,则不能使用从站进行路由.
日志内容warning如下:
被路由到slave上的情况:
六.故障自动切换:
A: Failover故障自动转移将发生故障的主节点替换为正在运行的从节点。它执行以下操作:
6.1选择旧主机的最新从机作为新主机。选择标准按降序排列
6.2如果新的主服务器具有未处理的中继日志项目,请取消并稍后重试
6.3 准备新的master
6.4重定向所有其他从属服务器以从新的主服务器复制
6.5检查所有从属是否正在复制
如果步骤6.1到6.3成功,则故障转移被视为成功,因为群集至少具有一个有效的主服务器
B: Switchover手动切换将正在运行的master与正在运行的slave交换。它执行以下操作:
1.准备降级的旧的master:
2.等待新的master赶上旧的master
3.像故障转移步骤3和4一样,升级新的主服务器并重定向从服务器。还要重定向已降级的旧主服务器
4.检查所有从属是否正在复制
提示:Failover/switchover requires MariaDB 10.0.2 or later.
七.自动重新加入到集群:
Rejoin将独立服务器加入群集,或重定向从非主服务器复制的从服务器。独立服务器通过以下方式加入:
从错误的主服务器复制的服务器仅通过STOP SLAVE,RESET SLAVE,CHANGE MASTER TO和START SLAVE命令进行重定向
八.数据库账户权限:
提示数据库账户权限:
参考文档资料:
https://blog.51cto.com/linzhijian/1913794
http://udn.yyuap.com/thread-38241-1-1.html
https://downloads.mariadb.com/MaxScale/centos/7/x86_64/
https://blog.csdn.net/weixin_34194551/article/details/92492325
https://blog.csdn.net/thundermeng/article/details/83900503
https://www.jianshu.com/p/1ac435a6510e
http://www.ttlsa.com/mysql/maxscale-install-read-write-split/