网站首页 > 博客文章 正文
作者:俊达
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#39;, 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_hostgroup | SQL转发目的hostgroup |
apply | 如果设置为1,则匹配当前规则后,就直接转发,不再匹配后续规则。 |
comment | 描述 |
在实际应用过程中,我们可以精细化配置SQL匹配规则,将特定模式的SQL语句路由的只读节点执行。
更多技术信息请查看云掣官网云掣YunChe - 可观测运维专家 | 大数据运维托管 | 云MSP服务
猜你喜欢
- 2024-09-10 解决Navicat连接 Mysql 8 出现1251- Client does not support错误
- 2024-09-10 win10安装mysql遇到的坑(win10安装mysql5.5)
- 2024-09-10 MySQL系列-二进制包安装(v8.0.24)
- 2024-09-10 Win10+docker+Laradock(下篇):Docker的基本操作与项目开发配置
- 2024-09-10 为Debezium配置MySQL单机版(mysqld 指定配置文件)
- 2024-09-10 Java 连接 MySQL 8.0 排错案例-爱可生
- 2024-09-10 MySQL数据库下载、安装、配置、卸载
- 2024-09-10 不要再原地踏步了,升级到 MySQL 8.x 的 6 大理由!
- 2024-09-10 Django + MySQL 8 开发环境用 Docker来部署
- 2024-09-10 【每日一学】数据库大揭秘:MySQL 事务学习手册,精通数据操作!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)