Spec-Zone.ru › MySQL Router 8.4

3.7 MySQL Router Установка трассировки

MySQL Router поддерживает трассировку запросов по мере их обработки MySQL Router от клиента к серверу и ответа клиенту. Трассировка возвращается в формате JSON.

Это позволяет отлаживать, тестировать, сравнивать подключения приложений и т.д.

Настройка

Для настройки ROUTER SET trace необходимо добавить следующее в файл конфигурации MySQL Router:

  • max_idle_server_connections: добавить в раздел DEFAULT. Это значение должно быть не меньше 1.

  • Следующие значения можно добавить в раздел DEFAULT, они применимы ко всем подключениям, или вы можете добавить их в отдельные разделы ROUTING: ... подключений, которые вы хотите подробно изучить.

    • client_ssl_mode: Установите значение PREFERRED или REQUIRED.

    • server_ssl_mode: Установите значение PREFERRED, REQUIRED или DISABLED.

    • connection_sharing: Установите значение 1 для включения совместного использования подключений.

Например:

[DEFAULT]
max_idle_server_connections=64

[routing:{...}]
client_ssl_mode=PREFERRED
server_ssl_mode=PREFERRED
connection_sharing=1
      

Включение ROUTER TRACE

ROUTER TRACE можно включить для каждой сессии или для каждого запроса в командной строке вашего MySQL клиента.

  • Включить для сессии:

    ROUTER SET TRACE = 1;
  • Отключить для сессии:

    ROUTER SET TRACE = 0;
  • Включить для запроса:

    query_attributes router.trace 1;
  • Отключить для запроса:

    query_attributes router.trace 0;

Формат трассировки

Трассировка возвращается в объекте JSON со следующими свойствами:

  • start_time: Строка даты и времени, обозначающая начало отрезка.

  • end_time: Строка даты и времени, обозначающая конец отрезка.

  • elapsed_in_span_us: Микросекунды, потраченные в текущем отрезке. Это значение равно end_time минус start_time.

  • status_code: Представляет собой стандартный код состояния завершенного отрезка. Значение по умолчанию — пустое.

  • name: Имя события.

  • attributes: Атрибуты события.

  • events: Массив событий. Они содержат следующее:

    • timestamp: Строка даты и времени.

    • name: Имя события.

    • attributes: Атрибуты события.

Например:

> mysql --host=127.0.0.1 --port=6446 --show-warnings
> ROUTER SET trace = 1;
> SELECT @@port;
+--------+
| @@port |
+--------+
|   3306 |
+--------+
1 row in set, 1 warning (0,02 sec)
Note (code 4600): {
  "start_time": "2023-03-23T15:31:08.052442Z",
  "end_time": "2023-03-23T15:31:08.052653Z",
  "elapsed_in_span_us": 211,
  "name": "mysql/query",
  "attributes": {
    "mysql.sharing_blocked": false
  },
  "events": [
    {
      "timestamp": "2023-03-23T15:31:08.052444Z",
      "name": "mysql/query_classify",
      "attributes": {
        "mysql.query.classification": "change_on_tracker"
      }
    },
    {
      "start_time": "2023-03-23T15:31:08.052455Z",
      "end_time": "2023-03-23T15:31:08.052495Z",
      "elapsed_in_span_us": 39,
      "name": "mysql/connect_and_forward",
      "attributes": {
        "mysql.remote.is_connected": true,
        "mysql.remote.endpoint": "localhost:3306",
        "mysql.remote.connection_id": 17,
        "db.name": ""
      },
      "events": [
        {
          "start_time": "2023-03-23T15:31:08.052458Z",
          "end_time": "2023-03-23T15:31:08.052495Z",
          "elapsed_in_span_us": 36,
          "name": "mysql/forward"
        }
      ]
    },
    {
      "start_time": "2023-03-23T15:31:08.052623Z",
      "end_time": "2023-03-23T15:31:08.052627Z",
      "elapsed_in_span_us": 3,
      "name": "mysql/response",
      "attributes": {
        "mysql.session.@@SESSION.statement_id": "84"
      }
    }
  ]
}
      

События трассировки

Поддерживаются следующие события и атрибуты трассировки:

mysql/query

MySQL Router получает запрос.

Атрибуты:

  • mysql.sharing_blocked: Логическое значение. Если общий доступ к соединениям заблокирован, отображается mysql.sharing_blocked_by вместе с причиной блокировки общего доступа.

  • mysql.sharing_blocked_by: Строка. Отображает причину блокировки общего доступа к соединениям. Это может быть одно из следующих значений:

    • trx-state: Активна транзакция.

    • trx-characteristics: Установлено состояние транзакции. Например, SET TRANSACTION READ ONLY.

    • some-state-changed: Сеанс находится в невосстановимом состоянии.

    • session-track-gtids: не содержит ожидаемого значения.

    • session-track-state-change: не содержит ожидаемого значения.

    • session-track-transaction-info: не содержит ожидаемого значения.

mysql/query_classify

Описывает, как MySQL Router проанализировал оператор в контексте общего доступа к соединениям.

Атрибуты:

  • mysql.query.classification: список, разделённый запятыми, из нуля или более следующих элементов:

    • accept_session_state_from_session_tracker: Оператор привёл к уведомлению от отслеживателя сеансов, которое было принято как есть.

    • ignore_session_tracker_some_state_changed: Оператор привёл к уведомлению от отслеживателя сеансов, которое было проигнорировано.

    • session_not_sharable_on_error: Операторы, такие как SET known_variable = 1, unknown_variable = 2, могут вызывать изменение состояния сеанса, даже если оператор завершился с ошибкой. Сервер отвечает с ошибкой, но без отслеживателя сеансов, несмотря на изменение состояния сеанса.

    • session_not_sharable_on_success: Устанавливается, если оператор изменяет состояние сеанса, но отслеживатель сеансов не сообщает об этом.

    • forbidden_function_with_connection_sharing: Оператор содержит функции или ключевые слова, которые невозможны при общем доступе к соединениям. Например, или .

    • forbidden_set_with_connection_sharing: Оператор попытался установить информацию отслеживателя сеансов, необходимую для общего доступа к соединениям.

mysql/connect_and_forward

Атрибуты:

  • mysql.remote.is_connected: Логическое значение. Если fale, соединения нет. Если true, возвращаются следующие значения:

    • mysql.remote.endpoint: Имя конечной точки соединения сервера.

    • mysql.remote.connection_id: Идентификатор соединения сервера.

    • db.name: Имя схемы.

mysql/from_pool_or_connect

Атрибуты:

  • mysql.remote.candidates: Список конечных точек, разделённый запятыми.

  • net.peer.name: Имя хоста конечной точки, к которой это соединение подключалось в предыдущем сеансе.

  • net.peer.port: Порт конечной точки, к которой это соединение подключалось в предыдущем сеансе.

mysql/from_pool

Атрибуты:

  • mysql.error_message: Отображается, если status_code имеет значение ERROR.

  • mysql.remote.connection_id: Идентификатор соединения сервера.

mysql/connect

Атрибуты:

  • net.peer.name: Имя хоста конечной точки.

  • net.peer.port: Порт конечной точки.

mysql/authenticate

Атрибуты:

  • mysql.remote.needs_full_authentication: Логическое значение. Если требуется полное рукопожатие (true) или если возможен быстрый сброс соединения (false).

    Если true, за ним следует mysql/change_user. Если false, за ним следует mysql/reset_connected.

mysql/server_greeting

Атрибуты:

  • mysql.remote.connection_id: Идентификатор соединения сервера.

mysql/client_greeting

Атрибуты:

  • db.name: Имя схемы.

mysql/tls_connect

Атрибуты:

  • tls.version: Используемая версия TLS.

  • tls.cipher: Шифр TLS, используемый для соединения.

  • tls.session_resused: Логическое значение. True, если сеанс TLS был повторно использован.

mysql/response

Атрибуты:

  • mysql.session.@@SESSION.*: Изменённые переменные сеанса в соответствии с отслеживателем сеансов сервера.

  • mysql.session.transaction_state: Список состояний транзакций, разделённый запятыми.

  • mysql.session.transaction_characteristics: Оператор, необходимый для восстановления состояния транзакции.

mysql/set_var

Атрибуты:

  • mysql.session.@@SESSION.*: Переменные сеанса, восстановленные после повторного подключения.

Следующие события имеют те же атрибуты, что и mysql/query:

  • mysql/ping

  • mysql/stmt_prepare

  • mysql/stmt_execute

  • mysql/kill

  • mysql/statistics

  • mysql/set_option

  • mysql/reload

  • mysql/list_fields

Следующие события не имеют атрибутов:

  • mysql/prepare_server_connection:

  • mysql/reset_connection:

  • mysql/greeting:

  • mysql/forward:

Примеры трассировки

Простая переадресация запроса

В следующем примере показана трассировка простой переадресации запроса:

  1. MySQL Router получает запрос.

  2. MySQL Router переадресует запрос на сервер.

  3. MySQL Router ожидает результат.

  4. MySQL Router переадресует результат клиенту.

$ mysql --host=127.0.0.1 --port=6446 --show-warnings
> ROUTER SET trace = 1;
> SELECT @@port;
+--------+
| @@port |
+--------+
|   3306 |
+--------+
1 row in set, 1 warning (0,02 sec)
Note (code 4600): {
  "start_time": "2023-03-23T15:31:08.052442Z",
  "end_time": "2023-03-23T15:31:08.052653Z",
  "elapsed_in_span_us": 211,
  "name": "mysql/query",
  "attributes": {
    "mysql.sharing_blocked": false
  },
  "events": [
    {
      "timestamp": "2023-03-23T15:31:08.052444Z",
      "name": "mysql/query_classify",
      "attributes": {
        "mysql.query.classification": "accept_session_state_from_session_tracker"
      }
    },
    {
      "start_time": "2023-03-23T15:31:08.052455Z",
      "end_time": "2023-03-23T15:31:08.052495Z",
      "elapsed_in_span_us": 39,
      "name": "mysql/connect_and_forward",
      "attributes": {
        "mysql.remote.is_connected": true,
        "mysql.remote.endpoint": "localhost:3306",
        "mysql.remote.connection_id": 17,
        "db.name": ""
      },
      "events": [
        {
          "start_time": "2023-03-23T15:31:08.052458Z",
          "end_time": "2023-03-23T15:31:08.052495Z",
          "elapsed_in_span_us": 36,
          "name": "mysql/forward"
        }
      ]
    },
    {
      "start_time": "2023-03-23T15:31:08.052623Z",
      "end_time": "2023-03-23T15:31:08.052627Z",
      "elapsed_in_span_us": 3,
      "name": "mysql/response",
      "attributes": {
        "mysql.session.@@SESSION.statement_id": "84"
      }
    }
  ]
}
      

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-router-8.4-en/router-set-trace.html

Spec-Zone.ru

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