En chiffres
- 114 commits en 4 jours
- 266 tests PHPUnit, 738 assertions
- 35 tickets GitHub traités (20 fermés, 15 ouverts avec solution proposée)
- 12 nouvelles features
- 0 régression (tous les tests passent)
Les nouveautés
1. Compatibilité complète MySQL 8.4
MySQL 8.4 a supprimé les commandes SLAVE au profit de REPLICA. PmaControl détecte maintenant automatiquement le fork (MariaDB vs MySQL) et utilise la bonne syntaxe :
| Action | MariaDB | MySQL 8.4+ |
|---|---|---|
| Arrêter la réplication | STOP SLAVE 'conn' |
STOP REPLICA FOR CHANNEL 'conn' |
| Changer la source | CHANGE MASTER TO ... |
CHANGE REPLICATION SOURCE TO ... |
| Threads parallèles | slave_parallel_threads |
replica_parallel_workers |
| Status master | SHOW MASTER STATUS |
SHOW BINARY LOG STATUS |
| GTID | MASTER_USE_GTID = slave_pos |
SET PERSIST gtid_mode = ON (4 étapes) |
L'activation GTID sur MySQL requiert une migration progressive (OFF → OFF_PERMISSIVE → ON_PERMISSIVE → ON) sur le master puis le slave. PmaControl gère tout automatiquement, y compris SET PERSIST pour la persistance sans toucher à my.cnf.
2. Analyse de binlogs
Nouvel outil d'analyse des binlogs accessible depuis la page réplication de chaque slave. Sélectionnez une plage horaire, PmaControl :
- Télécharge les fichiers binlog via le protocole MySQL (comme un IO thread)
- Parse les events GTID (parallélisme, taille des transactions)
- Compte les DML par table (INSERT/UPDATE/DELETE)
- Calcule le volume par seconde
- Détecte les DDL (ALTER TABLE, DROP, etc.)
- Génère des recommandations basées sur la config réelle du master et du slave
Graphiques interactifs :
- Volume KB/s + replication lag (axe Y double, zoom synchronisé)
- Transactions/seconde + threads_running master et slave
- Treemaps DML par base de données et par table (recalculés au zoom)
- Table DDL colorée par type (ALTER=orange, DROP=rouge, CREATE=vert)
Cache intelligent : les binlogs téléchargés sont stockés dans data/binlog_analysis/{server_id}/ avec un TTL de 30 jours. Une analyse sur la même plage horaire est quasi-instantanée.
Sécurité : les credentials MySQL ne sont plus visibles dans ps aux — utilisation d'un fichier .my.cnf temporaire avec chmod 0600.
3. Multi-source replication
Les serveurs MariaDB multi-source (comme production_all qui réplique depuis production_fr, production_uk, production_ro) affichent maintenant :
- Onglets : un par canal de réplication + un onglet "+" pour ajouter une nouvelle source
- Formulaire de setup : CHANGE MASTER complet (host, port, user, password, GTID, SSL, replicate_do_db)
- Graphiques filtrés : chaque onglet n'affiche que les données de lag de son canal
4. GeoIP IPv4 + IPv6
Les drapeaux pays sur la page serveurs fonctionnent maintenant avec les adresses IPv6. L'intégralité des ranges GeoLite2 (650K IPv4 + 1.95M IPv6 = 2.6M ranges) est importée dans MariaDB pour des lookups SQL < 1ms.
5. Group Replication / InnoDB Cluster
Nouvelle page dans le menu Architecture > Group Replication :
- Détection fiable du rôle PRIMARY/SECONDARY via
performance_schema.replication_group_members - Affichage dans le graphe Dot3 (sous-groupes Primary vert / Replica bleu)
- État ONLINE/RECOVERING/ERROR/OFFLINE avec couleurs
6. Dashboard Home redesigné
La page d'accueil affiche maintenant :
- KPIs : nombre de serveurs, disponibilité (%), réplication (%), daemons
- Alertes : liste des serveurs down (monitorés uniquement)
- Répartition : environnements, clients, versions (barres horizontales)
- Daemons : grille compacte avec badge running/stopped/error
7. Rôle ReadOnly
Nouveau rôle ReadOnly (group_id=10) avec 134 actions explicitement autorisées, aucun wildcard. Interdit : toute écriture, contrôle réplication, mots de passe, debug, requêtes lourdes sur information_schema, contrôle des daemons.
8. Pages redesignées
- Client/index : grille de cartes avec health bar, édition inline, toggle monitoring
- Architecture/index : header dégradé bleu foncé, grille SVG propre
- Slave/show : onglets multi-source, graphiques Chart.js 4.5.1 avec zoom synchronisé
Bugs corrigés
Sécurité
- Sanitization
connection_namecontre l'injection SQL dans 5 méthodes - Whitelist des champs éditables dans
Client::update() - Password caché dans les process list (
--defaults-extra-fileau lieu de--password=)
Stabilité
- Partitions ts_value désynchronisées entre tables (fix : création per-table + today inclus)
Extraction2:sql_query_silentpour les partitions manquantes- Binlog analysis : stall detection au lieu de timeout fixe (120s sans croissance = kill)
testAccessReplication(): ajoutBINLOG MONITORpour MariaDB 10.5+slave_connections_needed_for_purge=0avant purge des binlogs
UI
- Chart.js sparklines migrées de v2 à v4
- Canvas ID collision sur les graphes multi-channel
- "Load previous day" toujours décrémente même sans données
- Tooltips erratiques corrigés (mode
nearestau lieu deindex) - Tooltips colonnes sys schema (100+ colonnes documentées)
Roadmap — ce qui reste
Tickets ouverts (35)
Installeur Debian 13 (7 tickets) :
- Mots de passe prédictibles (#123)
- Credentials en clair dans
/tmp/config.json(#117) - Clé SSH privée dans le repo (#114)
- Version MariaDB ignorée (#120)
- Ownership
/var/www(#119)
Binlog Analysis :
- Timeline Gantt alignée avec les graphes (#106)
- Analyse lancée en double (#122)
- Cache d'écriture non atomique pour les logs MySQL (#121)
Data quality :
- Lag normalization NULL → 0 (#113)
- SSL state perdu dans la normalisation MySQL 8 (#116)
- Home dashboard : SingleStore classé comme MySQL (#130), PID reuse (#129), seconds_behind_source (#126)
Legacy :
- Rename database avec collation (#26)
- LDAP encoding (#40)
- Table names avec tirets dans Graphviz (#65)
- SqlFormatter deprecated strlen (#72)
Améliorations prévues
- Agrégation time-series : raw → 1min → 1hr → 1day avec stddev pour détection d'anomalies
- Alerting : notifications Telegram/email sur lag, serveur down, espace disque
- Système de plugins : install/uninstall depuis GitHub
- API REST : exposition des métriques pour intégration externe
Liens
- GitHub : github.com/PmaControl/PmaControl
- Telegram : t.me/pmacontrol
- Tickets ouverts : Issues
PmaControl est un outil open-source de supervision MySQL/MariaDB. Contributions bienvenues.
Commentaires (0)
Aucun commentaire pour le moment.
Laisser un commentaire