MaxScale实现mysql8读写分离

【MySQL专题】03、性能优化之读写分离(MaxScale) 在我们了解了MySQL的主从复制的性能优化之后,紧接着《【MySQL专题】02、性能优化之主从复制》中,我们提及的读写分离,来进行读操作和写操作分散到不同的服务器结构中,同时希望对多个从服务器能提供负载均衡,读写分离和负载均衡是MySQL集群的常规需求,然后MySQL的兄弟公司MariaDB 公司就开发了一种插件式结构,允许用户开发适合自己的插件,这个中间件叫:MaxScale。下面我们就来开始了解MaxScale。 1、MaxScale 概述 MariaDB MaxScale是一种数据... 阅读详情

MaxScale 实验环境

中间件192.168.150.24MaxScale 22.08.4
主服务器192.168.150.21mysql 8.0.30
从服务器192.168.150.22mysql 8.0.30
从服务器192.168.150.23mysql 8.0.30

读写分离基于主从同步

1.先实现数据库主从同步

基于gtid的主从同步配置

主库配置

# tail -3 /etc/my.cnf.d/mysql-server.cnf
server_id=1
gtid_mode=ON
enforce-gtid-consistency=ON
# systemctl restart mysqld

--创建用户
create user 'rep'@'192.168.150.%' identified with mysql_native_password by '123456';
--用户授权 “同步复制”、“同步复制状态”
grant replication slave on *.* to 'rep'@'192.168.150.%';

两台从库上配置

# tail -3 /etc/my.cnf.d/mysql-server.cnf
server_id=2和3
gtid_mode=ON
enforce-gtid-consistency=ON
read_only=ON
# systemctl restart mysqld

 两台从库进入myql配置    --配置主从同步 开启slave 并检查

CHANGE MASTER TO
MASTER_HOST = '192.168.150.21',
MASTER_USER = 'rep',
MASTER_PASSWORD = '123456',
MASTER_AUTO_POSITION = 1;

--启动主从同步
start slave

--检查
# mysql -e 'show slave status \G'  | grep -E -w "Slave_IO_Running|Slave_SQL_Running"
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

2. 创建用户

在开始配置之前,需要在 master中为 MaxScale 创建两个用户,用于监控模块和路由模块,已经实现主从复制的前提下,主库创建的用户,能同步到从库上

1) 创建监控用户 在主服务器上配置
--创建用户
create user 'maxscale_monitor'@'192.168.150.%' identified with mysql_native_password by 'Admin@123456';
--用户授权 “同步复制”、“同步复制状态”
grant replication slave, replication client on *.* to maxscale_monitor@'192.168.150.%';
2) 创建路由用户
--创建用户
create user 'maxscale_route'@'192.168.150.%' identified with mysql_native_password by 'Admin@123456';
--用户授权
GRANT SHOW DATABASES ON *.* TO maxscale_route@'192.168.150.%';
GRANT SELECT ON mysql.user TO maxscale_route@'192.168.150.%';
GRANT SELECT ON mysql.db TO maxscale_route@'192.168.150.%';
GRANT SELECT ON mysql.tables_priv TO maxscale_route@'192.168.150.%';
GRANT SELECT ON mysql.columns_priv TO maxscale_route@'192.168.150.%';
GRANT SELECT ON mysql.proxies_priv TO maxscale_route@'192.168.150.%';

3.安装MaxScale  在代理服务器(中间件)上安装

 在 MariaDB Products & Tools Downloads | MariaDB 选择对应系统合适的版本下载安装,我这里是openEuler系统,所以使用docker 安装    

# yum install docker -y
# systemctl enable --now docker

# 管理后台端口8989,3306中间件连接端口 
 docker run -d --name mxs -p 8989:8989 -p 3306:3306 -v /data/maxscale/maxscale.cnf:/etc/maxscale.cnf.d mariadb/maxscale:latest

# docker save mariadb/maxscale:latest -o maxscale_latest.tar

# 登录容器
docker exec -it mxs /bin/bash
# 查看版本信息
[root@4e2804021a7d /]# maxscale -version
MaxScale 23.08.3
# 查看版本日志
cat /var/log/maxscale/maxscale.log

4.配置maxscale

在/etc/maxscale.cnf.d新建一个配置my.cnf或者直接修改/etc/maxscale.cnf文件

[root@4e2804021a7d /]# vim /etc/maxscale.cnf.d/my.cnf
# 开启线程个数,默认为1.设置为auto会同cpu核数相同
[maxscale]
threads=auto

# 定义服务器主机1 主
[dbserv1]
type=server
address=192.168.150.21
port=3306
protocol=MariaDBBackend

# 定义服务器主机2 从
[dbserv2]
type=server
address=192.168.150.22
port=3306
protocol=MariaDBBackend

# 定义服务器主机3 从
[dbserv3]
type=server
address=192.168.150.23
port=3306
protocol=MariaDBBackend

#监视进程
[MySQL-Monitor]
type=monitor
module=mariadbmon
servers=dbserv1, dbserv2, dbserv3   
user=maxscale_monitor  # 之前在master上创建的监视用户,监视服务器dbserv1, dbserv2运行状态
password=Admin@123456
monitor_interval=2s

# 读写分离
[Read-Write-Service]
type=service
router=readwritesplit
servers=dbserv1,dbserv2,dbserv3
user=maxscale_route   # 之前在master上创建的路由用户,请求转发到 数据库服务器
password=Admin@123456
enable_root_user=true  # 默认禁止root用户访问,设置为1开启

# 监听读写服务端口
[Read-Write-Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
address=0.0.0.0
port=3306

配置完成后 重启MaxScale服务,进入容器:

[root@4e2804021a7d /]# exit
exit
[root@openEuler-node4 ~]# docker restart mxs
mxs
[root@openEuler-node4 ~]# docker exec -it mxs /bin/bash
启动maxscale
[root@4e2804021a7d /]# maxscale -f /etc/maxscale.cnf.d/my.cnf -U maxscale

使用 maxctrl list servers 命令查看运行状态

[root@4e2804021a7d /]# maxctrl list servers
┌─────────┬────────────────┬──────┬─────────────┬─────────────────┬──────┬───────────────┐
│ Server  │ Address        │ Port │ Connections │ State           │ GTID │ Monitor       │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼──────┼───────────────┤
│ dbserv1 │ 192.168.150.21 │ 3306 │ 0           │ Master, Running │      │ MySQL-Monitor │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼──────┼───────────────┤
│ dbserv2 │ 192.168.150.22 │ 3306 │ 0           │ Slave, Running  │      │ MySQL-Monitor │
├─────────┼────────────────┼──────┼─────────────┼─────────────────┼──────┼───────────────┤
│ dbserv3 │ 192.168.150.23 │ 3306 │ 0           │ Slave, Running  │      │ MySQL-Monitor │
└─────────┴────────────────┴──────┴─────────────┴─────────────────┴──────┴───────────────┘

查看注册服务

[root@4e2804021a7d /]# maxctrl list services
┌────────────────────┬────────────────┬─────────────┬───────────────────┬───────────────────────────┐
│ Service            │ Router         │ Connections │ Total Connections │ Targets                   │
├────────────────────┼────────────────┼─────────────┼───────────────────┼───────────────────────────┤
│ Read-Write-Service │ readwritesplit │ 1           │ 1                 │ dbserv1, dbserv2, dbserv3 │
└────────────────────┴────────────────┴─────────────┴───────────────────┴───────────────────────────┘

使用 maxctrl list listeners Read-Write-Service 命令查看服务监听状态信息

[root@4e2804021a7d /]# maxctrl list listeners Read-Write-Service
┌─────────────────────┬──────┬─────────┬─────────┬────────────────────┐
│ Name                │ Port │ Host    │ State   │ Service            │
├─────────────────────┼──────┼─────────┼─────────┼────────────────────┤
│ Read-Write-Listener │ 3306 │ 0.0.0.0 │ Running │ Read-Write-Service │
└─────────────────────┴──────┴─────────┴─────────┴────────────────────┘

 5.测试

1)从库只读

可以在从库中 slave(192.168.150.22) 新增一条数据,登录主库 master(192.168.150.21) 进行查询如果查询不到,在中间件连接库中 maxscale(192.168.150.24) 可以查询到则成功

2)在 master(主库)中创建一个访问用,已经实现主从复制的前提下,主库创建的用户,能同步到从库上

主库上操作
-- 创建用户
create user 'admin_user'@'%' identified with mysql_native_password by 'Admin@123456'; 
--msql 8.0.x 用户认证的方式需要修改为 mysql_native_password
--用户授权
grant all privileges on *.* to 'admin_user'@'%' with grant option;

让从库登陆主库创建的mysql账户密码 ,进行操作。

 

 

maxscale实现读写分离 maxscale实现mysql数据库读写分离 阅读详情

相关推荐

如何使用maxscale实现mysql读写分离

编辑[maxscale]# 主节点[server1]port=3306# 从节点 1[server2]port=3306# 从节点 2(可选)[server3]port=3306说明address:MySQL 节点的 IP(主节点,从节点等)。:MySQL 5.7 兼容此协议。:启用详细日志,便于调试。MaxScale 2.5 是 MySQL 5.7 的理想代理工具,通过实现读写分离。

小诸葛的博客 1132

安装maxscale实现MariaDB高可用及读写分离

一 介绍 MariaDB MaxScale是一个数据库代理,它将数据库语句转发到一个或多个数据库服务器。它扩展了MariaDB服务器的高可用性、可伸缩性和安全性,同时通过将其与底层数据库基础设施分离来简化应用程序开发。 MariaDB MaxScale旨在向应用程序透明地提供负载平衡和高可用性功能。MariaDB MaxScale有一个可伸缩和灵活的体系结构,带有支持不同协议和路由方法的插件组件。 MaxScale可以实现读写分离及负载均衡。 当主库故障后,maxscale可以实现数据库自动故障转移

雅冰石的专栏 6891

Mysql 读写分离中间件

mysql读写分离算是很早就提出的一个提高数据库性能的方案,最少有10多年之久了吧,但是实际应用中非常多的企业系统中还是在使用MySQL主从,甚至就是一个mysql。甚至很多资深的开发人员知道读写分离,什么mycat 等等,但是真正用于生产的还是不多。今天我们就给大家推荐一款轻量级,配置简单搭建方便的读写分离中间件。经过多款读写分离中间件比对后最为实用,非常适合中小型系统的读写分离中间件 maxscale。

u013454416的博客 2618

MaxScale 实现 MySQL 读写分离与负载均衡

Re: MaxScale 实现 MySQL 读写分离与负载均衡====================================# MaxScale作用 配置好了MySQL的主从复制结构后,能够实现读写分离,把读操作分散到slave服务器中,并且对多个slave服务器能实现负载均衡(本节演示暂时不包括:高可用 HA)。 读写分离和负载均衡是 MySQL 集群的基础需求,MaxScale 就可以帮着我们方便的实现这些功能。 # MaxScale 的基础构成 MaxScale 是MySQL的兄弟公司(MySQL Proxy & MySQL Router) MariaDB 开发的,现在已经发展得非常成熟。MaxScale 是插件式结构,允许用户开发适合自己的插件。 # MaxScale 的主要路由插件功能(演示重点)        决定如何把客户端的请求转发给后端数据库服务器,读写分离和负载均衡的功能就是由这个模块实现的。   

MaxScale:实现MySQL读写分离与负载均衡的中间件利器

1.MaxScale 是干什么的? 配置好了MySQL的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡。 读写分离和负载均衡 是MySQL集群的基础需求,MaxScale 就可以帮着我们方便的实现这些功能。 2.MaxScale 的基础构成 MaxScale 是MySQL的兄弟公司 MariaDB 开发的,现在已经发展得非常成熟。MaxScale 是插件式结构,允许用户开发适合自己的插件。 MaxScale 目前提供的插件功能分为5类: 认证插件

Bertram的博客 2544

PowerBuilder 9 遗留系统逆向实战:3款反编译工具对比与关键DLL破解

本文深入探讨了PowerBuilder 9遗留系统的逆向工程实战,对比分析了PBKiller、PB DeCompiler和Shudepb三款反编译工具的核心功能与适用场景,并详细解析了关键DLL破解技术。通过IDA和OllyDbg等工具的应用,提供了从静态解构到动态追踪的完整逆向方法论,帮助开发者有效维护老旧PB系统。

cucanqi9387的博客 1384

MariaDB *MaxScale*实现mysql8读写分离

可以在从库中 slave(192.168.121.152) 新增一条数据,登录主库 master(192.168.121.150) 进行查询如果查询不到,在中间件连接库中 maxscale(192.168.121.160) 可以查询到则成功(不建议,会破坏主从同步)中为 MaxScale 创建两个用户,用于监控模块和路由模块,已经实现主从复制的前提下,主库创建的用户,能同步到从库上。中创建一个访问用户,已经实现主从复制的前提下,主库创建的用户,能同步到从库上。在开始配置之前,需要在。

2302_77791905的博客 980

图像去畸变(相机成像、畸变模型)

首先通过上一步相机标定得到畸变参数和相机内参,同时,由于图像去畸变都是在归一化相机坐标系下进行的,而图像都是像素坐标,所以需要先通过相机内参矩阵将图片上的像素点从像素坐标系转变到归一化坐标系,再通过畸变参数在归一化坐标上进行去畸变的操作。由于畸变是发生在世界点通过透镜投影到相机坐标系这个过程中的,所以去畸变操作是在相机坐标系下进行的。(如图,Pd即为畸变后成像点)3.读取图像和各个参数,调用去畸变函数(opencv自带的cv.undistort函数),就可以完成对图像的去畸变处理,进而得到去畸变的图像。

lm5688jjupm1n28的博客 1051

MySQL 主从读写分离实现方案(一)—MariaDB MaxScale实现mysql8读写分离

是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现。

恭喜你发现了我!!!! 1602

【Office激活】学校正版Office已激活成功仍弹出激活窗口

学校正版Office激活问题:已激活成功仍弹出激活窗口

ESCM_的博客 1万+

【机器学习(一)】从零到一:用sklearn构建你的第一个机器学习项目

本文为机器学习新手提供了一个完整的端到端实战指南。通过使用Python的scikit-learn库,以经典的鸢尾花数据集为例,详细演示了从环境搭建、数据探索、预处理、模型训练与评估,到超参数调优和模型保存的全流程。文章旨在帮助读者快速构建第一个机器学习项目,掌握核心工作流和工程实践。

weixin_29070861的博客 467

MariaDB MaxScale实现mysql8读写分离

一、 MariaDB MaxScale实现mysql8读写分离1.MaxScale 是干什么的?2.MaxScale 实验环境3.实现数据库主从复制4.创建用户1) 创建监控用户 2) 创建路由用户5.安装MaxScale6.配置maxscale7.客户端连接测试

Starry__Sky222的博客 1091

C++软件调试与异常排查从入门到精通专栏介绍与文章汇总

根据近几年排查软件异常的实践与经验,系统地讲解了C++软件异常常见原因与常用排查方法,以图文并茂的方式给出具体的分析实例,带领大家逐步掌握C++软件异常排查的相关技术与要领。

dvlinker的技术专栏 23万+

MariaDB MaxScale实现mysql8主从同步读写分离

MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。

obboda的博客 1305

基于STM32F1XX 、HAL库的OPT4001-Q1环境光传感器驱动应用C语言程序设计

OPT4001-Q1 的输出是半对数 的,具有 9 个二进制对数满量程照度范围,每个范围内具有高度线性响应,使得 PicoStar™ 型号的测量能力为 312.5μlux 至 84klux,USON 型号的测量能力为 400µlux 至 107klux。// 禁用中断(示例)

PP_Cottage的博客 461

C++ (week6、7):Linux系统编程4:网络

Linux网络:计算机网络概述、TCP协议、Socket编程、IO多路复用机制(select、epoll)、HTTP协议、进程池、线程池、大文件网络传输问题

Edward2022的博客 1430

MySQL读写分离学习笔记

MaxScale是MariaDB公司开发的智能数据库代理和负载均衡工具,专门为MySQL/MariaDB数据库设计。核心功能包括负载均衡、高可用性、查询路由和安全功能。它能够在多个数据库服务器间分配查询负载,支持读写分离(主从架构),自动故障检测和故障转移,基于SQL语句内容的路由决策,以及数据库防火墙和查询过滤等功能。主要特点有完全兼容MySQL协议,支持多种路由模块(读/写分离、分片等),可插拔架构支持自定义模块开发,提供REST API进行监控和管理,支持二进制日志服务器功能。

Deity100的博客 371

Xilinx FPGA平台DDR3设计保姆式教程(3)MIG IP核使用教程及DDR读写时序

干货来了,用DDR搬砖,只需要会用IP就好,Xilinx官方YYDS! ----------------------------------------------------------------------------------------------------------------- 汇总篇: Xilinx平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了 ----------------------------------------------------------...

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2万+

【20年架构师总结】MySQL8-企业级数据库架构的核心

功能是否实现工具/方法主从复制✅读写分离✅MaxScale 代理高可用✅MaxScale 自动 Failover自动切换✅mariadbmon 监控模块易维护✅统一端口 3309 接入🎯最终效果写请求 → 自动路由到 Master(3306)读请求 → 负载均衡到 Slave1/Slave2Master 宕机 → 自动切换到最佳 Slave应用无感知,连接字符串始终是:3309。

老韩的Linux云计算架构师进阶之路 969

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MySQL主从同步

一、MySQL主从同步1、基于binlog的主从同步2、基于gtid的主从同步配置二、MySQL 主从读写分离实现方案2.1 ProxySQL实现mysql8主从同步读写分离1、ProxySQL基本介绍2、ProxySQL结构2、实验环境3、实现数据库主从复制4、安装ProxySQL5、配置ProxySQL

Starry__Sky222的博客 2081

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

通过maxscale实现mysql数据库的读写分离

Mysql读写分离

运维@小兵的博客 1456

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MySQL之MaxScale实现读写分离

MySQL之MaxScale实现读写分离

qq_43654581的博客 1481

MySQL-通过MaxScale实现读写分离初探

文章目录官方文档 官方文档 https://dev.mysql.com/doc/ 如果英文不好的话,可以参考 searchdoc 翻译的中文版本 http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html ...

小工匠 2万+
上一篇: MySQL基于binlog的主从同步
下一篇: mysql8.0使用MHA实现高可用
Fish_1112
博客等级 码龄5年 340粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fish_1112

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值