MySQL运维实战之ProxySQL(9.3)使用ProxySQL实现读写分离

作者:俊达

proxysql读写分离主要通过mysql_query_rules表中的规则来实现。

下面是具体的配置步骤:

1 hostgroup配置

insert into mysql_servers (hostgroup_id, hostname, port, max_replication_lag)
values ( 100, '172.16.121.236', 3380, 3);insert into mysql_servers (hostgroup_id, hostname, port, max_replication_lag)
values ( 101, '172.16.121.237', 3380, 3);load mysql servers  to runtime; 
SAVE MYSQL servers  TO DISK;

2 user配置

后端服务器创建用户

mysql> create user 'user1'@'%' identified by 'user1-backend';
Query OK, 0 rows affected (0.02 sec)mysql> grant all privileges on *.* to 'user1'@'%';
Query OK, 0 rows affected (0.02 sec)

proxysql上配置用户信息

insert into mysql_users
(username, password, transaction_persistent, backend, frontend, comment)
values ('user1', 'user1-backend', 1, 1, 1, 'backend user for user1');load mysql users  to runtime; 
SAVE MYSQL users  TO DISK;

用户表字段说明:

字段描述
username用户名。
password账号密码。可以使用明文,或者使用hash。若后端账号使用caching_sha2_password,则需要使用明文密码
use_ssl是否开启ssl
default_hostgroup默认hostgroup
default_schema默认schema
schema_locked暂时不支持
transaction_persistent设置为1时,如果连接开启了事务,则该连接后续的SQL转发给同一个hostgroup。读写分离场景下,通常需要将事务中的SELECT查询转发到主库,以保证事务一致性,可以将transaction_persistent设置为1。该字段默认为1
fast_forward设置为1时,绕过query路由选择,直接将SQL转发到指定hostgroup。
backend设置为1时,表示该账号是后端账号
frontend设置为1时,表示该账号是前端账号
max_connections后端连接池
comment描述

mysql 8.0 caching_sha2_password

如果后端mysql版本是8.0,并且后端账号使用了caching_sha2_password插件认证,则需要这样配置:

1、admin-hash_passwords设置为false

set admin-hash_passwords=1;-- 加载 & 持久化配置项 LOAD ADMIN VARIABLES to runtime;save ADMIN VARIABLES to disk;-- 确认配置生效mysql> select * from runtime_global_variables where variable_name = 'admin-hash_passwords';
+----------------------+----------------+
| variable_name        | variable_value |
+----------------------+----------------+
| admin-hash_passwords | false           |
+----------------------+----------------+

2、mysql_users表的password字段写入账号明文

load mysql users to runtime;
save mysql users to disk;-- 确认runtime_mysql_users表中的密码是明文
mysql> select username, password from runtime_mysql_users where username = 'user1';
+----------+---------------+
| username | password      |
+----------+---------------+
| user1    | user1-backend |

3 配置读写分离规则

insert into mysql_query_rules
(rule_id, username, match_pattern, destination_hostgroup,active, apply, comment )
values (101, 'user1', '^SELECT.*FOR UPDATE$', 100,1,1, 'user1 route to hostgroup 100');insert into mysql_query_rules
(rule_id, username, match_pattern, destination_hostgroup, active, apply, comment)
values (102, 'user1', '^SELECT', 101,1,1, 'user1 select query route to hostgroup 101');-- 生效规则 & 保存规则
load mysql query rules to runtime; 
SAVE MYSQL QUERY RULES TO DISK;

mysql_query_rules表字段说明:

字段描述
rule_id规则ID。proxysql 按rule_id的顺序来判断SQL的路由
active规则是否启用
username连接用户。如果配置了username,则使用该username连接的会话发送的SQL才能匹配当前规则。
schemaname如果配置了schemaname,则默认数据库名为该schemaname的会话发送的SQL才能匹配当前规则
match_pattern正则表达式,匹配SQL文本
negate_match_pattern如果设置为1,则只有不匹配match_pattern的SQL才匹配当前规则
destination_hostgroupSQL转发目的hostgroup
apply如果设置为1,则匹配当前规则后,就直接转发,不再匹配后续规则。
comment描述

在实际应用过程中,我们可以精细化配置SQL匹配规则,将特定模式的SQL语句路由的只读节点执行。

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

恒峰智慧科技-森林消防便捷泵:轻松应对火灾危机!

在广袤无垠的森林中,绿色是生命的象征,是自然的馈赠。然而,当火魔无情地吞噬这片生命的绿洲时,我们需要一种快速、高效、可靠的消防工具来守护这片绿色。此时,森林消防便捷泵应运而生,成为了守护森林安全的…

Oracle数据库 :查询表结构脚本

查询脚本 : SELECT CASE WHEN a.column_id1 THEN a.TABLE_NAME ELSE END AS 表名, a.column_id AS 序号, a.column_name as 列名, REPLACE(comments, CHR(10), ) as 列说明, a.data_type || ( || a.data_length || ) as 数据类型, a.DATA_LENGTH AS 长度, a.DATA_…

idea中停止运行Vue

在里面敲入Ctrlc 输入y确定即可。

代码随想录算法训练营第44天| 518.零钱兑换II*、 377. 组合总和 Ⅳ*

518.零钱兑换II* 力扣题目链接 代码 #### 示例代码 class Solution { public:int change(int amount, vector<int>& coins) {vector<int> dp(amount 1, 0);dp[0] 1;for (int i 0; i < coins.size(); i) { // 遍历物品for (int j coins[i]; j < a…

Git最佳实践指南:从配置到高效开发的全面教程20240418

引言 在现代软件开发中&#xff0c;版本控制系统是不可或缺的工具&#xff0c;而Git是其中最受欢迎的一种。无论是个人项目还是团队合作&#xff0c;合理的Git使用策略可以显著提高开发效率和代码质量。本文详细介绍了Git的实践流程&#xff0c;包括项目设置、日常开发操作和高…

【微服务-Ribbon】什么是负载均衡?微服务中负载均衡有哪些策略呢?

前面几篇文章&#xff0c;我们了解了一下Nacos的单机部署、集群部署以及微服务接入Nacos的步骤。从本篇开始&#xff0c;我们来看一下微服务第二个通用组件-负载均衡&#xff08;Ribbon&#xff09;。 1、Ribbon负载均衡器 负载均衡顾名思义&#xff0c;是指通过软件或者硬件…

电能质量分析仪是什么

TH-6500电能质量分析仪是一种用于记录和分析现场电能质量参数的设备。它能够检测并记录电力系统的电压波动、频率偏差、谐波、三相不平衡等参数&#xff0c;帮助用户了解电力系统的运行状态&#xff0c;及时发现并解决潜在的电能质量问题。 该设备具备多种测量功能&#xff0c…

供应LF1608-LR83KDAT 芯片

长期供应各品牌芯片&#xff1a; LF1608-LR83KDAT IMX290LQR-G STM32F103C8T6TR STM32F103C8T6TR STM32F103CBT7TR TPS3823-33DBVR IMX326 NM1482KSLAXCL-3B EM6AB160TSE-5G W25Q128JVSIQ FMN1ET1TCJ-25IG PN614G6D2TE-B8BE0 GD25Q128ESIG FM6BD1G1GMB-2.5BLCGE…

正则表达式=》判断中文字

判断中文字 //Name Classification string input = "Eng中"; string patternZh = @"^\(*([\u4E00-\u9FFF_\s\.\,\-]{1,98})?\)*$"; Match match = Regex.Match(input, patternZh); Console

AI系列:大语言模型的function calling(下)- 使用LangChain

目录 前言LangChain Tool/Function calling1. Tool/function加强功能LangChain的tool装饰器其他方式: Pydantic 2. 绑定tools/functions3. 调用大模型(LLM)4. function calling处理流程 LangChain版代码与原生LLM调用的比较参考 前言 在AI系列&#xff1a;大语言模型的functio…

嵌入式工程师有哪些必备技能,和电子爱好者有很大区别!

要掌握的技能实际上是非常多的。在这里&#xff0c;我来结合自己亲身经历&#xff0c;从技术、思维、项目管理等方面来谈一下我认为嵌入式开发需要掌握的技能。 技术方面 C语言和汇编语言能力 C语言是嵌入式开发最核心的编程语言。在我的初学阶段&#xff0c;我花费了很多时间…

生成人工智能体:人类行为的交互式模拟论文与源码架构解析(4)——架构分析 - 核心操作提示词构造

4.4.4.核心操作与提示词构造 &#xff08;1&#xff09;感知 0.根据vision_r参数&#xff0c;获取NPC周边(2*vision_r 1) **2个tile 1.将这些空间信息存储在NPC的空间记忆字典树 2.基于0的范围&#xff0c;获取当前NPC所在arena的所有事件&#xff0c;计算事件源距离NPC的…

替换Excel偶数行为上下平均值

169个直接转换上下两行转换实现代码 import openpyxl# 打开Excel文件 input_file (10s)result03-1.xlsx output_file new-34.xlsx wb openpyxl.load_workbook(input_file) output_wb openpyxl.Workbook()# 处理每个工作表 for sheet_name in wb.sheetnames:sheet wb[shee…

我用AI帮我画刘亦菲写真,绘画写真某一天是否可以取代照相馆?

我用AI帮我画刘亦菲写真&#xff0c;绘画写真某一天是否可以取代照相馆&#xff1f; 最近我试了用FaceChain人物写真生成来测试帮我绘图&#xff0c;为了不翻车&#xff0c;我在网上随便找了刘亦菲的日常照片10多张左右作为训练原图。 真随便找的 生成效果有多种选择 下面…

【问题处理】银河麒麟操作系统实例分享,服务器操作系统VNC远程问题分析

1.服务器环境以及配置 【内核版本】 4.19.90-23.8.v2101.ky10.aarch64 【OS镜像版本】 0518-server 2.问题现象描述 服务器通过vncserver:1.service服务启动的vnc服务后&#xff0c;普通用户用vnc连接时&#xff0c;锁屏后&#xff0c;然后输入登陆密码会报密码错误&…

Python Selenium 的基本使用方法

文章目录 1. 概述2. 安装Chrome及ChromeDriver2.1 安装Chrome2.2 安装ChromeDriver 3. 安装Selenium4. 常见用法4.1 启动4.2 查找元素4.3 等待页面加载元素 1. 概述 Selenium 是一个用于自动化 web 浏览器的工具&#xff0c;它提供了一套用于测试 web 应用程序的工具和库。Sel…

备考2024年小学生古诗文大会:吃透历年真题和知识点(持续讲题)

对上海小学生的小升初和各种评优争章来说&#xff0c;语文、数学、英语的含金量较高的证书还是很有价值和帮助的。对于语文类的竞赛&#xff0c;小学生古诗文大会和汉字小达人通常是必不可少的&#xff0c;因为这两个针对性强&#xff0c;而且具有很强的上海本地特色。 根据往…

【nnUNetv2进阶】六、nnUNetv2 魔改网络-小试牛刀-加入注意力机制CBAM

nnUNet是一个自适应的深度学习框架&#xff0c;专为医学图像分割任务设计。以下是关于nnUNet的详细解释和特点&#xff1a; 自适应框架&#xff1a;nnUNet能够根据具体的医学图像分割任务自动调整模型结构、训练参数等&#xff0c;从而避免了繁琐的手工调参过程。 自动化流程&a…

Shopee虾皮批量上传全球产品指南

当shopee虾皮需要大量上架新产品时&#xff0c;批量工具可以更好的提升效率。通过本指南&#xff0c;你将了解如何批量上传全球商品&#xff0c;本指南适用于所有站点。 一、什么是批量上传&#xff1f; 您可以通过【中国卖家中心>>全球商品>>批量上传】功能&…

PHP实现阿里OSS对象存储

一&#xff1a;阿里OSS文档地址 官方文档&#xff1a;https://help.aliyun.com/zh/oss/ github地址&#xff1a;https://github.com/aliyun/aliyun-oss-php-sdk 二&#xff1a;安装阿里OSS拓展 composer require aliyuncs/oss-sdk-php 三&#xff1a;阿里OSS使用教程 1&a…