Spec-Zone.ru › Ansible

Модуль 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 установлено в False, будет сохранено в базе данных, но никогда не будет загружено в структуры данных в памяти.

Варианты:

  • false
  • true

apply

boolean

Используется вместе с flagIN и flagOUT для создания цепочек правил. Значение True для apply указывает, что это последнее применяемое правило.

Варианты:

  • false
  • true

cache_empty_result

boolean

добавлено в community.proxysql 1.1.0

Определяет, будут ли кэшироваться наборы результатов без строк.

Варианты:

  • false
  • true

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 не установлен в True (см. community.proxysql.proxysql_mysql_users).

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 значение True.

Варианты:

  • false ← (по умолчанию)
  • true

load_to_runtime

boolean

Динамически загружать конфигурацию в память среды выполнения.

Варианты:

  • false
  • true ← (по умолчанию)

log

boolean

Запрос будет записан в журнал.

Варианты:

  • false
  • true

login_host

string

Хост для подключения к интерфейсу администрирования ProxySQL.

По умолчанию: "127.0.0.1"

login_password

string

Пароль для аутентификации в интерфейсе администрирования ProxySQL.

login_port

integer

Порт для подключения к интерфейсу администрирования ProxySQL.

По умолчанию: 6032

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

Если 0, мультиплексирование будет отключено.

Если 1, будет предпринята попытка включить мультиплексирование. Этому могут помешать другие условия (например, пользовательские переменные или транзакции).

Если 2, мультиплексирование не будет отключено только для текущего запроса.

По умолчанию политики мультиплексирования не изменяются.

Варианты:

  • 0
  • 1
  • 2

negate_match_pattern

boolean

Если для negate_match_pattern задано значение True, соответствующими будут считаться только запросы, не совпадающие с текстом запроса. Это действует как оператор NOT для сопоставления регулярного выражения с match_pattern.

Варианты:

  • false
  • true

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

Список параметров, разделённых запятыми, для изменения поведения механизма регулярных выражений. При использовании CASELESS сопоставление выполняется без учёта регистра. При использовании GLOBAL замена выполняется глобально (заменяются все совпадения, а не только первое). Для обратной совместимости по умолчанию включён только параметр CASELESS.

replace_pattern

string

Шаблон, которым заменяется найденное совпадение. Этот параметр необязателен; если он не указан, обработчик запросов будет только кэшировать запросы, направлять их или задавать другие параметры без перезаписи.

retries

integer

Максимальное количество повторных выполнений запроса в случае обнаружения сбоя во время его выполнения. Если retries не задан, применяется глобальная переменная mysql-query_retries_on_failure.

rule_id

integer

Уникальный идентификатор правила. Правила обрабатываются в порядке rule_id.

save_to_disk

boolean

Сохранять конфигурацию в базе данных SQLite на диске, чтобы она сохранялась после перезапуска.

Варианты:

  • false
  • true ← (по умолчанию)

schemaname

string

Критерий фильтрации по schemaname. Если schemaname не равно NULL, запрос будет соответствовать правилу, только если соединение использует schemaname в качестве схемы по умолчанию.

state

string

При значении present правило добавляется, при значении absent — удаляется.

Варианты:

  • "present" ← (по умолчанию)
  • "absent"

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.

Возвращается: При создании или обновлении возвращается изменённое правило; во всех остальных случаях возвращается список правил, соответствующих заданным критериям.

Пример: {"changed": true, "msg": "Added rule to mysql_query_rules", "rules": [{"OK_msg": null, "active": "0", "apply": "0", "cache_empty_result": null, "cache_ttl": null, "client_addr": null, "comment": null, "delay": null, "destination_hostgroup": 1, "digest": null, "error_msg": null, "flagIN": "0", "flagOUT": null, "log": null, "match_digest": null, "match_pattern": null, "mirror_flagOUT": null, "mirror_hostgroup": null, "multiplex": null, "negate_match_pattern": "0", "proxy_addr": null, "proxy_port": null, "reconnect": null, "replace_pattern": null, "retries": null, "rule_id": "1", "schemaname": null, "timeout": null, "username": "guest_ro"}], "state": "present"}

Авторы

  • Ben Mildren (@bmildren)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API