В цифрах
- 114 коммитов за 4 дня
- 266 тестов PHPUnit, 738 проверок (assertions)
- 35 тикетов GitHub обработано (20 закрыто, 15 открыто с предложенным решением)
- 12 новых функций
- 0 регрессий (все тесты проходят)
Новые возможности
1. Полная совместимость с MySQL 8.4
MySQL 8.4 удалил команды SLAVE в пользу REPLICA. PmaControl теперь автоматически определяет форк (MariaDB или MySQL) и использует правильный синтаксис:
| Действие | MariaDB | MySQL 8.4+ |
|---|---|---|
| Остановить репликацию | STOP SLAVE 'conn' |
STOP REPLICA FOR CHANNEL 'conn' |
| Сменить источник | CHANGE MASTER TO ... |
CHANGE REPLICATION SOURCE TO ... |
| Параллельные потоки | slave_parallel_threads |
replica_parallel_workers |
| Статус мастера | SHOW MASTER STATUS |
SHOW BINARY LOG STATUS |
| GTID | MASTER_USE_GTID = slave_pos |
SET PERSIST gtid_mode = ON (4 этапа) |
Активация GTID на MySQL требует поэтапной миграции (OFF → OFF_PERMISSIVE → ON_PERMISSIVE → ON) сначала на мастере, затем на слейве. PmaControl управляет всем автоматически, включая SET PERSIST для сохранения настроек без редактирования my.cnf.
2. Анализ binlog
Новый инструмент анализа binlog, доступный со страницы репликации каждого слейва. Выберите временной диапазон, и PmaControl:
- Скачивает файлы binlog через протокол MySQL (как IO thread)
- Парсит события GTID (параллелизм, размер транзакций)
- Подсчитывает DML по таблицам (INSERT/UPDATE/DELETE)
- Вычисляет объём в секунду
- Обнаруживает DDL (ALTER TABLE, DROP и т.д.)
- Генерирует рекомендации на основе реальной конфигурации мастера и слейва
Интерактивные графики:
- Объём КБ/с + лаг репликации (двойная ось Y, синхронизированное масштабирование)
- Транзакции/секунду + threads_running на мастере и слейве
- Treemaps DML по базам данных и таблицам (пересчитываются при масштабировании)
- Таблица DDL с цветовой маркировкой по типу (ALTER=оранжевый, DROP=красный, CREATE=зелёный)
Умное кеширование: скачанные binlog хранятся в data/binlog_analysis/{server_id}/ с TTL 30 дней. Повторный анализ за тот же период выполняется практически мгновенно.
Безопасность: учётные данные MySQL больше не видны в ps aux — используется временный файл .my.cnf с chmod 0600.
3. Multi-source репликация
Серверы MariaDB с multi-source репликацией (например, production_all, реплицирующий с production_fr, production_uk, production_ro) теперь отображают:
- Вкладки: по одной на каждый канал репликации + вкладка «+» для добавления нового источника
- Форму настройки: полный CHANGE MASTER (host, port, user, password, GTID, SSL, replicate_do_db)
- Фильтрованные графики: каждая вкладка показывает только данные о лаге своего канала
4. GeoIP IPv4 + IPv6
Флаги стран на странице серверов теперь работают с IPv6-адресами. Все диапазоны GeoLite2 (650K IPv4 + 1.95M IPv6 = 2.6M диапазонов) импортированы в MariaDB для SQL-запросов за < 1 мс.
5. Group Replication / InnoDB Cluster
Новая страница в меню Архитектура > Group Replication:
- Надёжное определение роли PRIMARY/SECONDARY через
performance_schema.replication_group_members - Отображение в графе Dot3 (подгруппы Primary зелёным / Replica синим)
- Статусы ONLINE/RECOVERING/ERROR/OFFLINE с цветовой индикацией
6. Редизайн Dashboard Home
Главная страница теперь отображает:
- KPI: количество серверов, доступность (%), репликация (%), демоны
- Алерты: список недоступных серверов (только мониторируемые)
- Распределение: окружения, клиенты, версии (горизонтальные гистограммы)
- Демоны: компактная сетка с индикаторами running/stopped/error
7. Роль ReadOnly
Новая роль ReadOnly (group_id=10) со 134 явно разрешёнными действиями, без wildcard. Запрещено: любая запись, управление репликацией, пароли, отладка, тяжёлые запросы к information_schema, управление демонами.
8. Обновлённые страницы
- Client/index: сетка карточек с health bar, inline-редактирование, переключатель мониторинга
- Architecture/index: заголовок с тёмно-синим градиентом, аккуратная SVG-сетка
- Slave/show: вкладки multi-source, графики Chart.js 4.5.1 с синхронизированным масштабированием
Исправленные ошибки
Безопасность
- Санитизация
connection_nameпротив SQL-инъекций в 5 методах - Белый список редактируемых полей в
Client::update() - Пароль скрыт в списке процессов (
--defaults-extra-fileвместо--password=)
Стабильность
- Рассинхронизация партиций ts_value между таблицами (исправление: создание per-table + включение текущего дня)
Extraction2:sql_query_silentдля отсутствующих партиций- Анализ binlog: обнаружение зависания вместо фиксированного таймаута (120с без роста = kill)
testAccessReplication(): добавлена привилегияBINLOG MONITORдля MariaDB 10.5+slave_connections_needed_for_purge=0перед очисткой binlog
UI
- Sparklines Chart.js мигрированы с v2 на v4
- Коллизия Canvas ID на графиках multi-channel
- «Load previous day» всегда декрементирует даже при отсутствии данных
- Исправлены хаотичные тултипы (режим
nearestвместоindex) - Тултипы для столбцов sys schema (документировано 100+ столбцов)
Дорожная карта — что осталось
Открытые тикеты (35)
Установщик Debian 13 (7 тикетов):
- Предсказуемые пароли (#123)
- Учётные данные в открытом виде в
/tmp/config.json(#117) - Приватный SSH-ключ в репозитории (#114)
- Игнорируется версия MariaDB (#120)
- Владелец
/var/www(#119)
Анализ binlog:
- Временная шкала Gantt, выровненная с графиками (#106)
- Двойной запуск анализа (#122)
- Неатомарный кеш записи для логов MySQL (#121)
Качество данных:
- Нормализация лага NULL → 0 (#113)
- Потеря SSL-статуса при нормализации MySQL 8 (#116)
- Dashboard Home: SingleStore классифицируется как MySQL (#130), повторное использование PID (#129), seconds_behind_source (#126)
Устаревшее:
- Переименование базы данных с collation (#26)
- Кодировка LDAP (#40)
- Имена таблиц с дефисами в Graphviz (#65)
- Устаревший strlen в SqlFormatter (#72)
Запланированные улучшения
- Агрегация временных рядов: raw → 1min → 1hr → 1day со stddev для обнаружения аномалий
- Алертинг: уведомления через Telegram/email о лаге, недоступности сервера, дисковом пространстве
- Система плагинов: установка/удаление из GitHub
- REST API: экспорт метрик для внешней интеграции
Ссылки
- GitHub: github.com/PmaControl/PmaControl
- Telegram: t.me/pmacontrol
- Открытые тикеты: Issues
PmaControl — инструмент мониторинга MariaDB / MySQL с открытым исходным кодом. Мы рады вашим контрибуциям.
Комментарии (0)
Комментариев пока нет.
Оставить комментарий