Модуль community.proxysql.proxysql_query_rules — изменение правил запросов с помощью интерфейса администрирования ProxySQL
Примечание
Этот модуль входит в коллекцию community.proxysql (версия 1.8.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.proxysql. Для использования этого модуля могут потребоваться дополнительные компоненты; подробности см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: community.proxysql.proxysql_query_rules.
Краткое описание
- Модуль community.proxysql.proxysql_query_rules изменяет правила запросов с помощью интерфейса администрирования ProxySQL.
Требования
На узле, выполняющем этот модуль, должны быть установлены следующие компоненты.
- PyMySQL
- mysqlclient
Параметры
Параметр | Комментарии |
|---|---|
active boolean | Правило, для которого active установлено в Варианты:
|
apply boolean | Используется вместе с flagIN и flagOUT для создания цепочек правил. Значение True для apply указывает, что это последнее применяемое правило. Варианты:
|
cache_empty_result boolean добавлено в community.proxysql 1.1.0 | Определяет, будут ли кэшироваться наборы результатов без строк. Варианты:
|
cache_ttl integer | Количество миллисекунд, в течение которых кэшируется результат запроса. Обратите внимание: в ProxySQL 1.1 значение cache_ttl указывалось в секундах. |
client_addr string | Сопоставление трафика от указанного источника. |
comment string | Поле свободного формата для описательного комментария к правилу запроса. |
config_file path | Укажите файл конфигурации, из которого будут считываться login_user и login_password. По умолчанию: |
delay integer | Количество миллисекунд, на которое задерживается выполнение запроса. Это механизм ограничения частоты запросов и обеспечения качества обслуживания (QoS), позволяющий задавать приоритет одних запросов перед другими. Это значение прибавляется к глобальной переменной mysql-default_query_delay, которая применяется ко всем запросам. |
destination_hostgroup integer | Направлять соответствующие запросы в эту группу хостов. Это выполняется, если нет активной транзакции и для вошедшего пользователя параметр transaction_persistent не установлен в |
digest string | Сопоставлять запросы с указанным хешем, возвращаемым параметром stats_mysql_query_digest.digest. |
error_msg string | Запрос будет заблокирован, а клиенту будет возвращено указанное сообщение error_msg. |
flagIN integer | Используется вместе с flagOUT и apply для создания цепочек правил. |
flagOUT integer | Используется вместе с flagIN и apply для создания цепочек правил. Если задано, flagOUT указывает значение flagIN, которое следует использовать в следующей цепочке правил. |
force_delete boolean | По умолчанию мы не удаляем более одного расписания за один пакетный вызов. Если вам необходимо такое поведение и вас не беспокоит, какие именно расписания будут удалены, установите для force_delete значение Варианты:
|
load_to_runtime boolean | Динамически загружать конфигурацию в память среды выполнения. Варианты:
|
log boolean | Запрос будет записан в журнал. Варианты:
|
login_host string | Хост для подключения к интерфейсу администрирования ProxySQL. По умолчанию: |
login_password string | Пароль для аутентификации в интерфейсе администрирования ProxySQL. |
login_port integer | Порт для подключения к интерфейсу администрирования ProxySQL. По умолчанию: |
login_unix_socket string | Сокет для подключения к интерфейсу администрирования ProxySQL. |
login_user string | Имя пользователя для аутентификации в интерфейсе администрирования ProxySQL. |
match_digest string | Регулярное выражение для сопоставления с хешем запроса. Используется диалект регулярных выражений re2 — https://github.com/google/re2. |
match_pattern string | Регулярное выражение для сопоставления с текстом запроса. Используется диалект регулярных выражений re2 — https://github.com/google/re2. |
mirror_flagOUT integer | Включает зеркалирование запросов. Если задано, mirror_flagOUT можно использовать для проверки зеркалируемого запроса по указанной цепочке правил. |
mirror_hostgroup integer | Включает зеркалирование запросов. Если задано, mirror_hostgroup можно использовать для зеркалирования запросов в ту же или другую группу хостов. |
multiplex integer добавлено в community.proxysql 1.1.0 | Если Если Если По умолчанию политики мультиплексирования не изменяются. Варианты:
|
negate_match_pattern boolean | Если для negate_match_pattern задано значение Варианты:
|
next_query_flagIN integer добавлено в community.proxysql 1.3.0 | Если задано, это значение станет значением flagIN для следующих запросов. |
OK_msg string добавлено в community.proxysql 1.1.0 | Указанное сообщение будет возвращено для запроса, к которому применяется заданное правило. |
proxy_addr string | Сопоставление входящего трафика по указанному локальному IP-адресу. |
proxy_port integer | Сопоставление входящего трафика по указанному локальному порту. |
re_modifiers string добавлено в community.proxysql 1.3.0 | Список параметров, разделённых запятыми, для изменения поведения механизма регулярных выражений. При использовании |
replace_pattern string | Шаблон, которым заменяется найденное совпадение. Этот параметр необязателен; если он не указан, обработчик запросов будет только кэшировать запросы, направлять их или задавать другие параметры без перезаписи. |
retries integer | Максимальное количество повторных выполнений запроса в случае обнаружения сбоя во время его выполнения. Если retries не задан, применяется глобальная переменная mysql-query_retries_on_failure. |
rule_id integer | Уникальный идентификатор правила. Правила обрабатываются в порядке rule_id. |
save_to_disk boolean | Сохранять конфигурацию в базе данных SQLite на диске, чтобы она сохранялась после перезапуска. Варианты:
|
schemaname string | Критерий фильтрации по schemaname. Если schemaname не равно NULL, запрос будет соответствовать правилу, только если соединение использует schemaname в качестве схемы по умолчанию. |
state string | При значении Варианты:
|
timeout integer | Максимальное время выполнения соответствующего или переписанного запроса в миллисекундах. Если запрос выполняется дольше заданного порога, он автоматически прерывается. Если timeout не задан, применяется глобальная переменная mysql-default_query_timeout. |
username string | Критерий фильтрации по имени пользователя. Если username не равно NULL, запрос будет соответствовать правилу, только если соединение установлено с правильным именем пользователя. |
Примечания
Примечание
- Поддерживается
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
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
stdout dictionary | Пользователь MySQL, изменённый или удалённый из ProxySQL. Возвращается: При создании или обновлении возвращается изменённое правило; во всех остальных случаях возвращается список правил, соответствующих заданным критериям. Пример: |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/proxysql/proxysql_query_rules_module.html