MaxScale实现MySQL数据库代理(下篇)

MaxScale实现MySQL数据库代理(下篇)

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

前言

使用MaxScale实现MySQL数据库代理, 需要搭建主从数据库, 参考之前的文章快速搭建环境

安装MaxScale

下载

  • 查看系统信息
uname -a &&  cat /etc/centos-release
复制代码

image.png

  • 下载

根据系统信息我们选择centos8 x86_64 maxscale-2.5.20-GA下载(6.4.0-GA没有centos8版本), 更多版本选择, 版本更新日志

image.png

 wget https://dlm.mariadb.com/2241747/MaxScale/2.5.20/yum/centos/8/x86_64/maxscale-2.5.20-1.rhel.8.x86_64.rpm
复制代码

安装依赖包

yum install -y gnutls && yum install -y libatomic
复制代码

安装MaxScale

官网安装教程

rpm -ivh maxscale-2.5.13-1.rhel.7.x86_64.rpm
复制代码

创建用户

-- 创建监听用户
CREATE USER 'maxscale'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'maxscale'@'%';
-- 创建路由用户, 主要用来查询mysql.user表的信息
CREATE USER 'router'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON mysql.* TO 'router'@'%';

flush privileges;
复制代码

配置maxscale.cnf

在/etc/目录下有maxscale.cnf.template模板文件和maxscale.cnf配置文件, 直接改掉替换掉参数值即可, 如果/etc/下没有该配置文件, 可以手动创建一个, 配置内容如下:

[maxscale]
# 启动线程数
threads=auto
# 2.5之后提供了GUI, 开启admin, 默认端口8989
admin_host=0.0.0.0
admin_secure_gui=false

# 数据库连接配置
[server1]
type=server
address=server1-ip
port=3307
protocol=MariaDBBackend

[server2]
type=server
address=server2-ip
port=3308
protocol=MariaDBBackend

# 数据库监控
[MariaDB-Monitor]
type=monitor
module=mariadbmon
# 多个以,分割, 第一个为master
servers=server1,server2
user=maxscale
password=123456
# 每隔2秒探测一次
monitor_interval=1000
# 主从同步最大能容忍延时
max_slave_replication_lag=2000

# 只读服务
[Read-Only-Service]
type=service
router=readconnroute
servers=server2
user=maxscale
password=123456
router_options=slave
# 读写服务, 做读写分离
[Read-Write-Service]
type=service
router=readwritesplit
servers=server1,server2
user=router
password=123456
# maxscale暴露出的代理只读服务
[Read-Only-Listener]
type=listener
service=Read-Only-Service
protocol=MariaDBClient
port=4008
# maxscale暴露出的代理读写服务
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=4006
复制代码

更多详细的配置信息传送门

启动

# 此版本的maxscale禁止root用户启动, 这里使用rpm安装过程中自动创建的maxscale用户启动
maxscale -f /etc/maxscale.cnf -U maxscale
复制代码

控制台

默认账号密码: admin/mariadb image.png

测试

# 进入容器
docker exec -it mysqlmaster /bin/sh
# 连接maxscale服务
mysql -umaxscale -p123456 -P4006 -hip
复制代码

普通查询走从库

image.png

事务查询走主库

image.png 这里的select @@hostname;的结果为docker容器的id

image.png

至此, 我们使用maxscale搭建的mysql代理已经完成了, 当然maxscale还支持故障转移等更加丰富的功能, 这里不再赘述

猜你喜欢

转载自juejin.im/post/7110769547132534820
今日推荐