community.proxysql.proxysql_query_rules 模块 – 使用 proxysql 管理界面修改查询规则
注意
此模块是 community.proxysql 集合 (版本 1.6.0) 的一部分。
如果您正在使用 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.proxysql
。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 playbook 中使用它,请指定: community.proxysql.proxysql_query_rules
。
概要
community.proxysql.proxysql_query_rules 模块使用 proxysql 管理界面修改查询规则。
要求
执行此模块的主机需要以下要求。
PyMySQL
mysqlclient
参数
参数 |
注释 |
---|---|
将 *active* 设置为 选项
|
|
与 *flagIN* 和 *flagOUT* 结合使用以创建规则链。将 apply 设置为 True 表示要应用的最后一个规则。 选项
|
|
控制是否缓存没有行的结果集。 选项
|
|
缓存查询结果的毫秒数。请注意,在 ProxySQL 1.1 中,*cache_ttl* 以秒为单位。 |
|
匹配来自特定来源的流量。 |
|
自由格式文本字段,可用于查询规则的描述性注释。 |
|
指定从中读取 *login_user* 和 *login_password* 的配置文件。 默认值: |
|
延迟查询执行的毫秒数。这实际上是一种限流机制和 QoS,并提供了一种优先处理查询的方法。此值将添加到适用于所有查询的 mysql-default_query_delay 全局变量。 |
|
将匹配的查询路由到此主机组。除非存在已启动的事务并且登录用户的 *transaction_persistent* 设置为 |
|
匹配具有特定摘要的查询,如 stats_mysql_query_digest.digest 返回的那样。 |
|
查询将被阻止,并且指定的 error_msg 将返回给客户端。 |
|
与 *flagOUT* 和 *apply* 结合使用以创建规则链。 |
|
与 *flagIN* 和 apply 结合使用以创建规则链。设置时,*flagOUT* 表示在下一个规则链中使用的 *flagIN*。 |
|
默认情况下,我们避免在单个批次中删除多个计划,但是如果您需要此行为并且您不关心已删除的计划,则可以将 *force_delete* 设置为 选项
|
|
动态地将配置加载到运行时内存。 选项
|
|
查询将被记录。 选项
|
|
用于连接到 ProxySQL 管理界面的主机。 默认值: |
|
用于对 ProxySQL 管理界面进行身份验证的密码。 |
|
用于连接到 ProxySQL 管理界面的端口。 默认值: |
|
用于连接到 ProxySQL 管理界面的套接字。 |
|
用于对 ProxySQL 管理界面进行身份验证的用户名。 |
|
与查询摘要匹配的正则表达式。使用的正则表达式方言是 re2 - https://github.com/google/re2。 |
|
与查询文本匹配的正则表达式。使用的正则表达式方言是 re2 - https://github.com/google/re2。 |
|
启用查询镜像。如果设置了mirror_flagOUT,则可以用来针对指定的规则链评估镜像查询。 |
|
启用查询镜像。如果设置了mirror_hostgroup,则可以将查询镜像到相同或不同的主机组。 |
|
如果为 如果为 如果为 默认情况下,不会更改多路复用策略。 选项
|
|
如果negate_match_pattern设置为 选项
|
|
设置后,其值将成为下一个查询的flagIN值。 |
|
对于使用已定义规则的查询,将返回指定的消息。 |
|
匹配特定本地IP上的传入流量。 |
|
匹配特定本地端口上的传入流量。 |
|
用于修改RE引擎行为的选项的逗号分隔列表。使用 |
|
这是用来替换匹配模式的模式。请注意,这是可选的,当省略时,查询处理器将只缓存、路由或设置其他参数,而不会重写。 |
|
在查询执行过程中检测到故障时,需要重新执行查询的最多次数。如果未指定retries,则应用全局变量mysql-query_retries_on_failure。 |
|
规则的唯一ID。规则按rule_id顺序处理。 |
|
将配置保存到磁盘上的sqlite数据库中以持久化配置。 选项
|
|
匹配schemaname的过滤条件。如果schemaname非空,则只有当连接使用schemaname作为其默认模式时,查询才会匹配。 |
|
当 选项
|
|
匹配或重写的查询应执行的最大超时时间(毫秒)。如果查询运行时间超过特定阈值,则查询将自动终止。如果未指定timeout,则应用全局变量mysql-default_query_timeout。 |
|
匹配username的过滤条件。如果username非空,则只有当连接使用正确的用户名时,查询才会匹配。 |
备注
注意
支持
check_mode
。
示例
---
# This example adds a rule to redirect queries from a specific user to another
# hostgroup, it saves the mysql query rule config to disk, but avoids loading
# the mysql query config config to runtime (this might be because several
# rules are being added and the user wants to push the config to runtime in a
# single batch using the community.general.proxysql_manage_config module). It
# uses supplied credentials to connect to the proxysql admin interface.
- name: Add a rule
community.proxysql.proxysql_query_rules:
login_user: admin
login_password: admin
username: 'guest_ro'
match_pattern: "^SELECT.*"
destination_hostgroup: 1
active: 1
retries: 3
state: present
load_to_runtime: false
# This example demonstrates the situation, if your application tries to set a
# variable that will disable multiplexing, and you think it can be filtered out,
# you can create a filter that returns OK without executing the request.
- name: Add a filter rule
community.proxysql.proxysql_query_rules:
login_user: admin
login_password: admin
match_digest: '^SET @@wait_timeout = ?'
active: 1
OK_msg: 'The wait_timeout variable is ignored'
# This example adds a caching rule for a query that matches the digest.
# The query digest can be obtained from the `stats_mysql_query_digest`
# table. `cache_ttl` is specified in milliseconds. Empty responses are
# not cached.
- name: Add a cache rule
community.proxysql.proxysql_query_rules:
login_user: admin
login_password: admin
rule_id: 1
digest: 0xECA450EA500A9A55
cache_ttl: 30000
cache_empty_result: false
destination_hostgroup: 1
active: true
state: present
save_to_disk: true
load_to_runtime: true
# This example demonstrates how to prevent disabling multiplexing for
# situations where a request contains @.
- name: Add a rule with multiplex
community.proxysql.proxysql_query_rules:
login_user: admin
login_password: admin
rule_id: 1
active: 1
match_digest: '^SELECT @@max_allowed_packet'
multiplex: 2
# This example demonstrates how to use next_query_flagIN argument. It allows
# ProxySQL query rules to be chained. The examples shows how you can have SELECTS
# immediately follow INSERT/UPDATE/DELETE statements to query the primary hostgroup
# and avoid replication lag
- name: Add insert query rule
proxysql_query_rules:
match_digest: "^INSERT"
destination_hostgroup: 1,
next_query_flagIN: 1
- name: Add update query rule
proxysql_query_rules:
match_digest: "^UPDATE"
destination_hostgroup: 1,
next_query_flagIN: 1
- name: Add delete query rules
proxysql_query_rules:
match_digest: "^DELETE"
destination_hostgroup: 1,
next_query_flagIN: 1
- name: Add insert query rules
proxysql_query_rules:
match_digest: ".*"
destination_hostgroup: 1,
next_query_flagIN: 1
comment: Match every queries after an INSERT/UPDATE/DELETE query
# This example removes all rules that use the username 'guest_ro', saves the
# mysql query rule config to disk, and dynamically loads the mysql query rule
# config to runtime. It uses credentials in a supplied config file to connect
# to the proxysql admin interface.
- name: Remove rules
community.proxysql.proxysql_query_rules:
config_file: '~/proxysql.cnf'
username: 'guest_ro'
state: absent
force_delete: true
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
从proxysql修改或删除的mysql用户。 返回:在创建/更新时将返回新修改的规则,在所有其他情况下将返回与提供的条件匹配的规则列表。 示例: |