标签:参数 tick 等价 git dba active pat 事务 proxy
ProxySQL可以实现多种方式的路由:基于ip/port、username、schema、SQL语句。其中基于SQL语句的路由是按照规则进行匹配的,匹配方式有hash高效匹配、正则匹配,还支持更复杂的链式规则匹配。
角色 | 主机IP | server_id | 数据状态 |
---|---|---|---|
Proxysql | 10.2.83.140 | null | 无 |
Master | 10.2.83.140 | 140 | 刚安装的全新MySQL实例,mysql 8.0.19 |
Slave1 | 10.2.83.141 | 141 | 刚安装的全新MySQL实例,mysql 8.0.19 |
虽然基于端口实现读写分离配置起来非常简单,但是缺点也很明显:必须在前端app的代码中指定端口号码。这意味着MySQL的一部分流量权限被开发人员掌控了,换句话说,DBA无法全局控制MySQL的流量。此外,修改端口号时,app的代码也必须做出相应的修改。
首先修改ProxySQL监听SQL流量的端口号,让其监听在不同端口上。
service proxysql stop
service proxysql start
[root@node2 ~]# netstat -luntp|grep proxy
tcp 0 0 0.0.0.0:6032 0.0.0.0:* LISTEN 11543/proxysql
tcp 0 0 0.0.0.0:6033 0.0.0.0:* LISTEN 11543/proxysql
tcp 0 0 0.0.0.0:6034 0.0.0.0:* LISTEN 11543/proxysql
监听到不同端口,再去修改mysql_query_rules
表
insert into mysql_query_rules(rule_id,active,proxy_port,destination_hostgroup,apply) values(1,1,6033,10,1), (2,1,6034,20,1);
load mysql query rules to runtime;
save mysql query rules to disk;
1.1 mysql_query_rules表的介绍
schemaname
作为默认schema时,该连接发出的查询才会被匹配。(在MariaDB/MySQL中,schemaname等价于databasename)。stats_mysql_query_digest.digest
中。match_digest
或match_pattern
匹配的才算被成功匹配。也就是说,相当于在这两个匹配动作前加了NOT操作符进行取反。CASELESS
后,将忽略大小写。指定了GLOBAL
后,将替换全局(而不是第一个被匹配到的内容)。为了向后兼容,默认只启用了CASELESS
修饰符。transaction_persistent=1
(见mysql_users
表),且该用户建立的连接开启了一个事务,则这个事务内的所有语句都将路由到同一主机组,无视匹配规则。mysql-default_query_timeout
的值。mysql-query_retries_on_failure
的值。mysql-default_query_delay
全局变量中,所以它会应用于所有的查询。将来的版本中将会提供一个更高级的限流机制。error_msg
指定的信息。NULL
,表示不会修改multiplexing的策略。mysql_query_rules_fast_routing
中的规则)。
标签:参数 tick 等价 git dba active pat 事务 proxy
原文地址:https://www.cnblogs.com/liuxiuxiu/p/14950983.html