当前位置: 首页 > article >正文

Maxscale实现Mysql的读写分离

介绍:

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

实验环境:

基于gtid的主从同步的基础上进行配置

中间件192.168.93.20MaxScale 24.02.5Rocky8
主服务器192.168.93.10Mysql 8.0.41openEuler
从服务器192.168.93.11Mysql 8.0.41openEluer
从服务器192.168.93.12Mysql 8.0.41openEuler

配置:

1、安装maxscale

下载的话可以先配置maxscale的yum源:/etc/yum.repos.d/mariadb.repo

[mariadb-main]
name = MariaDB Server
baseurl = https://dlm.mariadb.com/repo/mariadb-server/11.rolling/yum/rhel/8/x86_64
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Server-GPG-KEY
gpgcheck = 1
enabled = 1
module_hotfixes = 1


[mariadb-maxscale]
# To use the latest stable release of MaxScale, use "latest" as the version
# To use the latest beta (or stable if no current beta) release of MaxScale, use "beta" as the version
name = MariaDB MaxScale
baseurl = https://dlm.mariadb.com/repo/maxscale/latest/yum/rhel/8/x86_64
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-MaxScale-GPG-KEY
gpgcheck = 1
enabled = 1


[mariadb-tools]
name = MariaDB Tools
baseurl = https://downloads.mariadb.com/Tools/rhel/8/x86_64
gpgkey = file:///etc/pki/rpm-gpg/MariaDB-Enterprise-GPG-KEY
gpgcheck = 1
enabled = 1

官方文档上给了脚本的方式配置:

https://mariadb.com/kb/en/library/mariadb-package-repository-setup-and-usage/

curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash

查看是否又安装包:

[root@Rocky-1 ~]# dnf install maxscale.x86_64

2、配置

安装完成之后会有一个主配置文件/etc/maxscal.cnf,也可在其子配置文件下配置,注意以.cnf结尾

[maxscale]

#开启线程个数,默认为1,设置auto会同cpu核数相同
threads=auto

[dbserver1]
type=server
address=192.168.93.10
port=3306
protocol=MariaDBBackend

[dbserver2]
type=server
address=192.168.93.11
port=3306
protocol=MariaDBBackend

[dbserver3]
type=server
address=192.168.93.12
port=3306
protocol=MariaDBBackend

[MySQL-Monitor]
#监视进程
type=monitor
module=mariadbmon
servers=dbserver1,dbserver2,dbserver3
user=maxscale_monitor
password=Admin@123456

monitor_interval=2s

[Read-Write-Service]

读写分离
type=service
router=readwritesplit
servers=dbserver1,dbserver2,dbserver3
user=maxscale_route
password=Admin@123456

enable_root_user=true

[Read-Write-Listenner]

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

3、创建用户

创建监控用户:

mysql> create user 'maxscale_monitor'@'192.168.93.%' identified with mysql_native_password by 'Admin@123456';
 

mysql> grant replication slave, replication client on *.* to maxscale_monitor@'192.168.93.%';

创建路由用户:

create user 'maxscale_route'@'192.168.93.%' identified with mysql_native_password by 'Admin@123456';

GRANT SHOW DATABASES ON *.* TO maxscale_route@'192.168.93.%';
GRANT SELECT ON mysql.user TO maxscale_route@'192.168.93.%';
GRANT SELECT ON mysql.db TO maxscale_route@'192.168.93.%';
GRANT SELECT ON mysql.tables_priv TO maxscale_route@'192.168.93.%';
GRANT SELECT ON mysql.columns_priv TO maxscale_route@'192.168.93.%';
GRANT SELECT ON mysql.proxies_priv TO maxscale_route@'192.168.93.%';

配置完成重启服务:

[root@Rocky-1 ~]# maxscale -f /etc/maxscale.cnf.d/maxscale.cnf -U maxscale

#查看端口的监听状态

[root@Rocky-1 ~]# ps -ef | grep maxscale
maxscale   10908       1  0 23:23 ?        00:00:00 maxscale -f /etc/maxscale.cnf.d/maxscale.cnf -U maxscale
root       10921    1619  0 23:25 pts/0    00:00:00 grep --color=auto maxscale

查看运行状态,注册服务,服务监听状态信息

测试

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

create user 'admin_user'@'%' identified with mysql_native_password by 'Admin@123456';

grant all privileges on *.* to 'admin_user'@'%' with grant option;


#测试连接

主库创建一个数据库,从库马上更新,实验完成!

相关文章:

Maxscale实现Mysql的读写分离

介绍: Maxscale是mariadb开发的一个MySQL数据中间件,配置简单,能够实现读写分离,并且能根据主从状态实现写库的自动切换,对多个服务器实现负载均衡。 实验环境: 基于gtid的主从同步的基础上进行配置 中…...

以运营为核心的智能劳动力管理系统,破解连锁零售、制造业排班难题

在连锁零售、制造业、物流等劳动力密集型行业中,排班与考勤管理不仅是人力资源管理的核心环节,更是直接影响企业运营效率、成本控制与合规风险的关键场景。尤其在当前经济环境下,企业面临用工成本攀升、政策合规趋严、业务波动频繁等多重挑战…...

c++_csp-j算法 (5)

动态规划 介绍 动态规划(Dynamic Programming)是一种常用的解决优化问题的算法设计技术,常用于解决具有重叠子问题和最优子结构性质的问题。动态规划算法通过将问题划分为子问题,解决子问题并将子问题的解保存起来,最终构建出原问题的解。在本节中,我们将详细介绍动态规…...

sql server tempdb库的字符集和用户库字符集不一样

执行2个表用not in 关联,但是提示这个错误 消息 468,级别 16,状态 9,第 74 行 无法解决 equal to 运算中 "Latin1_General_CI_AS" 和 "Chinese_PRC_CI_AS" 之间的排序规则冲突。 对比2个表字段字符集都是&…...

Spring Boot 启动生命周期详解

Spring Boot 启动生命周期详解 1. 启动阶段划分 Spring Boot 启动过程分为 4个核心阶段,每个阶段涉及不同的核心类和执行逻辑: 阶段 1:预初始化(Pre-initialization) 目标:准备启动器和环境配置关键类&am…...

蓝桥杯 20. 压缩变换

压缩变换 原题目链接 题目描述 小明最近在研究压缩算法。他知道,压缩时如果能够使数值很小,就能通过熵编码得到较高的压缩比。然而,要使数值变小是一个挑战。 最近,小明需要压缩一些正整数序列,这些序列的特点是&a…...

数据湖DataLake和传统数据仓库Datawarehouse的主要区别是什么?优缺点是什么?

数据湖和传统数据仓库的主要区别 以下是数据湖和传统数据仓库的主要区别,以表格形式展示: 特性数据湖传统数据仓库数据类型支持结构化、半结构化及非结构化数据主要处理结构化数据架构设计扁平化架构,所有数据存储在一个大的“池”中多层架…...

YOLO改进实战:添加SOCA注意力机制提升目标检测性能

## 目录 1. **注意力机制简介** 2. **SOCA模块的核心原理** 3. **YOLOv5添加SOCA的完整步骤** 4. **实验效果与性能对比** 5. **SOCA的改进优势与创新性** --- ### 一、注意力机制简介 注意力机制(Attention Mechanism)模仿人类视觉的选择性关注特性,通过动态…...

Python爬虫实战:获取网yi新闻网财经信息并做数据分析,以供选股做参考

一、引言 在财经领域,股市信息对投资者意义重大。网yi新闻作为知名新闻资讯平台,其股市板块蕴含丰富的最新股市热点信息。然而,依靠传统人工方式从海量网页数据中获取并分析这些信息,效率低下且难以全面覆盖。因此,利用爬虫技术自动化抓取相关信息,并结合数据分析和机器…...

解决conda虚拟环境安装包却依旧安装到base环境下

最近跑项目装包装到几度崩溃,包一直没有安装到正确位置,为此写下这篇文章记录一下,也希望能帮到有需要的人。(此文章开发环境为anaconda和window) 方法一 先conda deactivate,看到(base)消失…...

IPOF方法学应用案例:动态电压频率调整(DVFS)在AIoT芯片中的应用

案例:动态电压频率调整(DVFS)在AIoT芯片中的应用 一、背景知识 继上一篇IPOF(Input-Process-Output-Feedback)方法学简介, 这一篇我们给出一个IPOF在集成电路芯片领域的一个应用场景。 动态电压频率调整&…...

Vue 3新手入门指南,从安装到基础语法

作为一名前端新手,你可能听说过Vue.js的简单与强大,但面对框架的安装和一堆新概念,可能会觉得无从下手。别担心!这篇文章将带你从零开始,完成Vue3的安装,并通过简单示例掌握核心语法。无论你是完全零基础&a…...

反爬加密字体替换机制解析

加密字体替换是网站反爬虫的常用技术之一,其核心是通过自定义字体文件对关键数据(如数字、文字)进行动态渲染,使源码中显示的字符与用户实际看到的内容不一致。下面从技术原理、实现类型和破解方法三个方向展开分析,并…...

字节跳动开源数字人模型latentsync1.5,性能、质量进一步优化~

项目背景 LatentSync1.5 是由 ByteDance 开发的一款先进的 AI 模型,专门针对视频唇同步(lip synchronization)任务设计,旨在实现音频与视频唇部动作的高质量、自然匹配。随着 AI 技术的快速发展,视频生成和编辑的需求…...

Day12(回溯法)——LeetCode51.N皇后39.组合总和

1 前言 今天刷了三道回溯法和一道每日推荐,三道回溯法也迷迷糊糊的,每日推荐把自己绕进去了,虽然是一道之前做过的题的变种。刷的脑子疼。。。今天挑两道回溯题写一下吧,其中有一道是之前做过的N皇后,今天在详细写一写…...

简历中的专业技能

Java 精通Java 核心,多年一线研发经验,具备良好的编码能力、并熟练应用设计模式精通多进程、Java 高并发编程,阅读过相关 JDK 源码以及Lock锁的底层源码,熟悉 AQS 和 CAS 的核心思想,能够运用其机制优化并发编程精通 …...

力扣HOT100——102.二叉树层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] /*** Definition for a bi…...

【Token系列】05 | 位置编码不是位置信息:Transformer如何建立语言顺序感?

文章目录 05 | 位置编码不是位置信息:Transformer如何建立语言顺序感?一、为什么Transformer需要“位置感知”?二、什么是位置编码(Position Encoding, PE)?三、相对 vs 绝对位置编码四、可学习位置编码机制…...

springboot启动的端口如何终止

若要终止 Spring Boot 应用所使用的端口,可依据应用的运行方式,采用不同的解决办法。以下为你详细介绍: 1. 直接停止正在运行的 Spring Boot 应用程序 开发环境(IDE 中运行) IntelliJ IDEA:在 IDE 的运行…...

chrony服务器(1)

简介 NTP NTP(Network Time Protocol,网络时间协议)是一种用于同步计算机系统时间的协议是TCP/IP协议族中的一个应用层协议,主要用于在分布式时间服务器和客户端之间进行时钟同步,提供高精准度的时间校正通过分层的时…...

搭建基于火灾风险预测与防范的消防安全科普小程序

基于微信小程序的消防安全科普互动平台的设计与实现,是关于微信小程序的,知识课程学习,包括学习后答题。 技术栈主要采用微信小程序云开发,有下面的模块: 1.课程学习模块 2.资讯模块 3.答题模块 4.我的模块 还需…...

RAG技术与应用---0426

大语言模型>3.10 课程中会用到python 工具箱: faiss,modelscope,langchain,langchain_community,PyPDF2 1)大模型应用开发的三种模式 提示词没多少工作量,微调又花费时间费用,RAG是很多公司招聘用来对LLM进行应用…...

element-ui多个form同时验证,以及动态循环表单注意事项

多个form同时验证: validateForm(refs) {if (!refs) {return false}return new Promise((resolve, reject) > {refs.validate().then((valid) > {resolve(valid)}).catch((val) > {resolve(false)})}) }, async handleConfirm() {Promise.all([this.valid…...

k8s学习记录(四):节点亲和性

一、前言 在上一篇文章里,我们了解了 Pod 中的nodeName和nodeSelector这两个属性,通过它们能够指定 Pod 调度到哪个 Node 上。今天,我们将进一步深入探索 Pod 相关知识。这部分内容不仅信息量较大,理解起来也有一定难度&#xff0…...

文本预处理(NLTK)

1. 自然语言处理基础概念 1.1 什么是自然语言处理 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于…...

一些常见的资源池管理、分布式管理和负载均衡的监控工具

资源池管理监控工具 Prometheus 是一款开源的系统监控和警报工具。它可以通过收集各种指标数据,如CPU使用率、内存使用量、磁盘I/O等,来监控资源池中的服务器、容器等资源。Prometheus具有强大的查询语言和可视化功能,能够帮助管理员快速了解资源的使用情况,并及时发现潜在…...

Neo4j 可观测性最佳实践

Neo4j 介绍 Neo4j 是一款领先的图数据库管理系统,采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据,节点代表实体,关系表示节点间的连接,属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言&#xff0…...

JAVA服务内存缓慢上涨,年轻代GC正常但Full GC频繁,如何定位?

1. 分析 : 年轻代GC正常,说明年轻代的对象回收没有问题,可能大部分对象都是朝生夕死的,所以Minor GC能有效清理。但Full GC频繁,通常意味着老年代空间不足,导致频繁进行Full GC来回收老年代。而内存缓慢上…...

C++入门(讲解1)

1. namespace的定义 1.1 定义命名空间,需要用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中就是命名空间的成员。命名空间中可以定义变量/函数/类型等。 1.2 namespace的本质是定义出一个域,这个…...

react的ant-design-pro框架左侧菜单修改为动态路由

在使用 React 框架结合 Ant Design Pro 进行项目开发时,动态路由的修改是一项常见且重要的任务。动态路由能够根据用户的角色、权限或者其他运行时的条件来展示不同的页面内容,极大地提升了应用的灵活性和安全性。本文将结合一个完整的示例项目&#xff…...