Linux环境下部署MaxScale
测试环境:两台服务器,Mysql版本 8.0,linux版本:Ubuntu 20.04.3;
介绍
在我之前的文章里面有介绍MySql主从服务器的配置,我们项目通常使用.NET开发Server端,如果是代码直接去管理主从服务器的访问,比较不友好,因而使用MaxScale作为代理来访问,MaxScale 是 MariaDB 开发的一个数据库智能代理服务,相当于它成为Server端和Mysql端中间的代理服务,可以将Server对数据库的访问进行转发,从而实现读写分离和负载均衡。
安装
安装部署部分可参考ubuntu安装maxscale-CSDN博客
上面介绍的是单机环境的安装,实际生产过程如有需要,建议安装MaxScale集群。
需要注意的是:
1.防火墙:
要保证4006,3306端口可以访问,最好就是关闭防火墙。
2.MySql路由用户
MaxScale配置好后,可以使用Navicat客户端或是其它来连接测试,此时连接的端口就是我们配置的maxscale.cnf文件的[Read-Write-Listener]部分的port(4006),连接用户就是我们新建的路由用户;我的MySql是8.0,在创建路由用户的时候,认证插件选择
mysql_native_password
否则可能会出现如下报错情况:
'Access denied for user 'maxscalerouter'@'***' (using password: YES)'. Authenticator error: 'Stored password hash length is 70 when 40 was expected'.
路由用户可以授予所有的权限:如下:
create user 'maxscalerouter'@'%' identified with 'mysql_native_password' by '123456';
grant ALL PRIVILEGES on *.* to 'maxscalerouter'@'%';
FLUSH PRIVILEGES;
如果路由用户的认证插件是caching_sha2_password,需要修改为mysql_native_password,则执行如下Sql语句:
-- 修改认证插件并设置密码
ALTER USER 'maxscalerouter'@'Master的ip地址'
IDENTIFIED WITH mysql_native_password BY 'YourNewPassword';-- 刷新
FLUSH PRIVILEGES;
修改完成后都重新启动MaxScale服务:
sudo systemctl restart maxscale