MySQL-Developper HA_ ProxySQL
Lab : ProxySQL
1. Installation de ProxySQL
Sur ton serveur ProxySQL (un 3e serveur ou l’un de tes masters, mais idéalement séparé) :
sudo apt update
wget -nv -O /etc/apt/[Link].d/[Link]
'[Link]
sudo apt install proxysql -y
Démarrer le service :
sudo systemctl enable proxysql
sudo systemctl start proxysql
🔹 2. Connexion à l’interface admin
ProxySQL a deux interfaces :
Admin (port 6032) → pour configurer ProxySQL
MySQL Frontend (port 6033) → pour les clients MySQL
Connexion à l’admin :
mysql -u admin -p -h [Link] -P6032
Mot de passe par défaut = admin
🔹 3. Ajouter tes serveurs MySQL
Dans l’interface admin de ProxySQL :
-- Ajouter les deux masters
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10,
'[Link]', 3306);
INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (10,
'[Link]', 3306);
-- Sauvegarder
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
👉 Ici, hostgroup_id = 10 → un groupe logique où ProxySQL va faire du round-robin.
1
MySQL-Developper HA_ ProxySQL
🔹 4. Définir un utilisateur MySQL
Tu dois créer un utilisateur MySQL sur tes deux serveurs masters :
CREATE USER 'testuser'@'%' IDENTIFIED BY 'password123';
GRANT ALL PRIVILEGES ON formation.* TO 'testuser'@'%';
FLUSH PRIVILEGES;
Puis l’ajouter dans ProxySQL :
INSERT INTO mysql_users (username, password, default_hostgroup)
VALUES ('testuser', 'password123', 10);
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
🔹 5. Vérifier la config
Toujours dans ProxySQL admin :
SELECT * FROM mysql_servers;
SELECT * FROM mysql_users;
Tu devrais voir tes 2 serveurs et ton utilisateur.
🔹 6. Connexion via ProxySQL
Maintenant tu te connectes en frontal :
mysql -h <IP_ProxySQL> -P6033 -u testuser -p
Vérifie sur quelle instance tu es connecté :
SHOW VARIABLES LIKE 'server_id';
Refais la connexion plusieurs fois → ça doit basculer entre 1 et 2.
🔹 7. Test de réplication
1. Insère une donnée via ProxySQL :
USE formation;
CREATE TABLE IF NOT EXISTS test_proxy (id INT AUTO_INCREMENT PRIMARY KEY, msg
VARCHAR(50));
INSERT INTO test_proxy (msg) VALUES ('Test via ProxySQL');
2
MySQL-Developper HA_ ProxySQL
2. Vérifie directement sur chaque master ([Link] et [Link]) que la ligne
est bien répliquée.
🔹 8. Vérification failover
Stoppe un serveur MySQL :
sudo systemctl stop mysql
Reconnecte-toi via ProxySQL → il doit automatiquement basculer sur l’autre serveur.
✅ Avec ProxySQL tu as :
Load balancing intelligent (round-robin, poids, etc.)
Failover automatique
Gestion native de la réplication
Possibilité d’envoyer les lectures sur un slave et les écritures sur un master (read/write
split).