Spec-Zone.ru › Ansible

community.proxysql.proxysql_query_rules модуль — Изменяет правила запросов с помощью интерфейса администрирования proxysql

Примечание

Этот модуль входит в коллекцию community.proxysql (версия 1.6.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 для создания цепочек правил. Установка apply в True обозначает последнее правило, которое будет применено.

Варианты:

  • 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

added in 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

added in community.proxysql 1.3.0

При установке его значение станет значением flagIN для последующих запросов.

OK_msg

string

added in community.proxysql 1.1.0

Указанное сообщение будет возвращено для запроса, использующего определённое правило.

proxy_addr

string

Сопоставление входящего трафика со специфическим локальным IP-адресом.

proxy_port

integer

Сопоставление входящего трафика со специфическим локальным портом.

re_modifiers

string

added in community.proxysql 1.3.0

Список опций, разделённых запятыми, для изменения поведения движка RE. С 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

словарь

Пользователь 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–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/proxysql/proxysql_query_rules_module.html

Spec-Zone.ru

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