PmaControl logo PmaControl
  • Главная
  • PmaControl
    • ИИ-агенты 13 on-premise агентов
    • Тарифы Community, Cloud, On-Premise, Premium
    • Документация Руководства, API, архитектура
    • Клиенты 28+ компаний
    • FAQ 25 вопросов / 7 категорий
    Базы данных
    • MariaDB 30 статей
    • MySQL 10 статей
    • Galera Cluster 6 статей
    • MaxScale 3 статьи
    • ProxySQL 2 статьи
    • Amazon Aurora MySQL 0 статьи
    • Azure Database 0 статьи
    • ClickHouse 0 статьи
    • GCP CloudSQL 0 статьи
    • Percona Server 0 статьи
    • SingleStore 0 статьи
    • TiDB 0 статьи
    • Vitess 0 статьи
    Решения
    • Поддержка 24×7 Экстренная помощь MariaDB & MySQL
    • Observabilité SQL Мониторинг, алерты, топология
    • Haute disponibilité Репликация, failover, Galera
    • Disaster Recovery Backup, restore, RPO/RTO
    • Sécurité & conformité Аудит, GDPR, SOC2
    • Migration & upgrade Zero downtime, pt-osc, gh-ost
  • Тарифы
  • Ресурсы
    • Документация Технические руководства и API
    • FAQ 25 частых вопросов
    • Отзывы Отзывы клиентов и кейсы
    • Блог Статьи и аналитика
    • Roadmap Планируемые функции
    Области экспертизы
    • Observabilité SQL Мониторинг, алерты, топология Dot3
    • Haute disponibilité Репликация, failover, Galera
    • Sécurité & conformité Аудит, GDPR, SOC2, ISO 27001
    • Disaster Recovery Backup, restore, RPO/RTO
    • Performance & optimisation Digests, EXPLAIN, tuning
    • Migration & upgrade Zero downtime, pt-osc
    Быстрые ссылки
    • Wiki GitHub 26 страниц — установка, движок, плагины
    • Исходный код Официальный репозиторий GitHub
    • Поддержка 24×7 Экстренная помощь MariaDB & MySQL
    • Записаться на демо 30 мин — реальная архитектура
  • Поддержка 24×7
  • Записаться на демо
Записаться на демо
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文
← Вернуться в блог

Dot3: картографирование сложных топологий MariaDB / MySQL

Опубликовано March 21, 2026 Автор Aurélien LEQUOY
pmacontrol topology graphviz proxysql architecture
Поделиться X LinkedIn Facebook Email PDF
Dot3: картографирование сложных топологий MariaDB / MySQL

Проблема: невидимые топологии

У вас 40 экземпляров MariaDB / MySQL. Часть в репликации Master-Slave. Другие в Master-Master. Кластер Galera из 5 узлов. Два ProxySQL в peer-to-peer. MaxScale для маршрутизации чтения. SSH-туннели для межДЦ-доступа. DNS-алиасы, скрывающие реальные IP-адреса.

Простой вопрос: сможете ли вы нарисовать полную архитектуру менее чем за 5 минут?

В большинстве организаций ответ — нет. Топология хранится в устаревшей wiki, не обновляемом Confluence или в голове старшего DBA, который в отпуске.

Dot3 решает эту проблему.

Что такое Dot3?

Dot3 — это встроенный в PmaControl движок топологической картографии. Он использует Graphviz (язык DOT) для генерации визуальных представлений архитектур баз данных.

Название «Dot3» происходит от третьей итерации движка. Первые две версии использовали упрощённые подходы (списки соединений, статические деревья). Dot3 вводит динамическое разрешение endpoint-ов и контекстный рендеринг.

Разрешение endpoint-ов

Первый шаг Dot3 — понять, что стоит за каждым endpoint-ом, настроенным в PmaControl. Endpoint может быть:

1. Прямое подключение MariaDB / MySQL

Простейший случай. Dot3 подключается к порту 3306 (или другому), выполняет SHOW VARIABLES и SHOW SLAVE STATUS / SHOW REPLICA STATUS, и определяет роль сервера (мастер, слейв, standalone).

2. ProxySQL

Dot3 обнаруживает ProxySQL по наличию admin-порта (6032 по умолчанию). Подключаясь к admin-порту, он получает:

  • runtime_mysql_servers: список бэкендов с их hostgroup
  • runtime_mysql_replication_hostgroups: маппинг writer/reader
  • proxysql_servers: пиры ProxySQL (для кластеризации)

Это позволяет прочертить связи между ProxySQL и его бэкендами, а также между пирами ProxySQL.

3. MaxScale

MaxScale обнаруживается через его REST API (порт 8989). Dot3 запрашивает /v1/servers и /v1/services для восстановления топологии бэкендов и сервисов маршрутизации.

4. VIP и плавающие адреса

Когда endpoint является VIP (Virtual IP, управляемый keepalived или Pacemaker), Dot3 разрешает адрес до активного физического сервера. VIP представляется как промежуточный узел с отличающимся визуальным стилем (ромб вместо прямоугольника).

5. SSH-туннели

Для мультиДЦ-архитектур с SSH-туннелями Dot3 отображает полный путь: клиент -> SSH-туннель -> реальный endpoint. Туннель отображается как пунктирное соединение в графе.

6. DNS-алиасы

Dot3 разрешает DNS-алиасы (CNAME) и отображает как имя алиаса, так и реальное имя хоста, предотвращая путаницу, когда один сервер упоминается под несколькими именами.

Рендеринг

После разрешения всех endpoint-ов Dot3 генерирует граф DOT, который компилируется Graphviz в SVG (или PNG). Вот как представляются различные топологии.

Репликация Master-Slave

Master [shape=box, color=blue, label="db-master\n10.0.1.10:3306"]
Slave1 [shape=box, color=green, label="db-slave1\n10.0.1.11:3306"]
Slave2 [shape=box, color=green, label="db-slave2\n10.0.1.12:3306"]
Master -> Slave1 [label="repl"]
Master -> Slave2 [label="repl"]

Стрелки репликации направлены от мастера к слейвам (направление потока данных). Лаг репликации отображается на ребре, когда он значителен.

Репликация Master-Master

Двунаправленные репликации представлены двойными стрелками. Dot3 обнаруживает этот случай, когда оба сервера взаимно идентифицируют друг друга как мастер через SHOW SLAVE STATUS.

Master1 -> Master2 [dir=both, label="M-M"]

Кластер Galera

Узлы Galera группируются в subgraph с пунктирной рамкой. Каждый узел окрашен в соответствии с состоянием wsrep:

  • Synced: зелёный
  • Donor/Desynced: оранжевый
  • Joining: жёлтый
  • Disconnected: красный
subgraph cluster_galera_prod {
  label="Galera Prod (3 nodes)"
  style=dashed
  galera1 [color=green]
  galera2 [color=green]
  galera3 [color=green]
}

ProxySQL peer-to-peer

Связи между пирами ProxySQL отображаются двунаправленными пунктирными стрелками, визуально отличающимися от связей репликации MariaDB / MySQL.

Баг PNG-иконок в SVG

При разработке Dot3 мы хотели интегрировать иконки для визуальной идентификации типов узлов: иконка MariaDB, иконка ProxySQL, иконка MaxScale.

Первая реализация использовала PNG-иконки, встроенные в SVG через теги <image> с base64 href. Это работало в браузерах, но создавало несколько проблем:

  1. Graphviz некорректно поддерживает встроенные PNG в SVG-выводе — позиции были смещены
  2. Рендеринг был размытым на экранах Retina/HiDPI
  3. Размер SVG-файлов взрывался из-за base64

Решение: заменить все PNG-иконки на нативные SVG-иконки. Мы воссоздали proxysql.svg, maxscale.svg и другие в чистом векторном SVG. Результат:

  • Чёткий рендеринг на любом разрешении
  • Корректное позиционирование в Graphviz
  • Размер файлов уменьшен в 5 раз

Практический пример

Вот реальная (анонимизированная) топология, сгенерированная Dot3 для клиента из e-commerce:

ProxySQL-1 <-> ProxySQL-2          (peer-to-peer)
    |               |
  [HG10: Writer]  [HG20: Readers]
    |               |
  Master --> Slave-1              (репликация)
    |        Slave-2
    |        Slave-3
    |
  +---------------------+
  | Galera Cluster       |
  | Node-1  Node-2      |        (кластер)
  | Node-3              |
  +---------------------+

Эта схема сгенерирована автоматически Dot3. Никакой ручной настройки layout. Dot3 обнаруживает топологию, разрешает endpoint-ы, а Graphviz занимается размещением.

Интеграция в PmaControl

В интерфейсе PmaControl топологическая карта доступна через вкладку Topology. Она обновляется автоматически и отражает состояние в реальном времени:

  • Слейв с лагом репликации отображается с красным ребром
  • Узел Galera в состоянии Donor меняет цвет
  • ProxySQL, потерявший бэкенд, показывает его серым

Сгенерированный SVG интерактивен: клик по узлу открывает подробную карточку сервера в PmaControl.

Ограничения и планируемые улучшения

Dot3 хорошо работает для топологий от 1 до 100 узлов. При большем количестве layout Graphviz может стать запутанным. Планируемые улучшения:

  1. Фильтрация по тегу: отображение только подмножества топологии (по среде, клиенту, ДЦ)
  2. Режим diff: сравнение двух топологических снимков для визуализации изменений
  3. Экспорт Terraform: генерация Infrastructure-as-Code описания обнаруженной топологии

Заключение

Топология инфраструктуры MariaDB / MySQL не должна быть тайной, задокументированной в устаревшей wiki. Dot3 обнаруживает её, разрешает и рисует автоматически.

Это разница между «я думаю, что репликация идёт на этот сервер» и «я вижу, что репликация идёт на этот сервер, с 3 секундами лага, уже 14 дней».

Поделиться X LinkedIn Facebook Email PDF
← Вернуться в блог

Комментарии (0)

Комментариев пока нет.

Оставить комментарий

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
Юридическая информация GitHub Контакты
Не ждите инцидента, чтобы понять свою архитектуру. © 2014-2026 PmaControl — 68Koncept