# 📘 Documentation : Installation GLPI avec BDD externe et réplication MariaDB sur Debian 12 --- ## 1️⃣ Pré-requis - Deux serveurs Debian 12 : - **Master BDD** : `192.168.100.9` - **Replica BDD** : `192.168.100.10` - Serveur GLPI : `192.168.100.7` - Accès root/sudo sur tous les serveurs - Firewall : port **3306** ouvert entre Master et Replica, et du GLPI vers le Master --- ## 2️⃣ Installation de MariaDB sur le serveur externe (Master) ```bash sudo apt update && sudo apt upgrade -y sudo apt install mariadb-server -y sudo systemctl enable --now mariadb sudo mysql_secure_installation ``` **Paramètres recommandés :** - Supprimer les utilisateurs anonymes - Interdire root distant - Supprimer la base test - Mettre un mot de passe root fort --- ## 3️⃣ Création de la base GLPI et de l’utilisateur ```sql CREATE DATABASE glpidb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'glpiuser'@'192.168.100.7' IDENTIFIED BY 'Btssio2017'; GRANT ALL PRIVILEGES ON glpidb.* TO 'glpiuser'@'192.168.100.7'; FLUSH PRIVILEGES; ``` --- ## 4️⃣ Configurer MariaDB pour un accès externe Éditer `/etc/mysql/mariadb.conf.d/50-server.cnf` sur le **Master** : ```ini [mysqld] server-id = 1 log_bin = /var/log/mysql/mariadb-bin binlog_format = ROW bind-address = 192.168.100.9 expire_logs_days = 7 max_binlog_size = 100M ``` Créer le dossier des logs si nécessaire : ```bash sudo mkdir -p /var/log/mysql sudo chown -R mysql:mysql /var/log/mysql sudo chmod 750 /var/log/mysql sudo systemctl restart mariadb ``` --- ## 5️⃣ Lier GLPI à la base externe 1. Supprimer le fichier de configuration local de GLPI : ```bash sudo rm /var/www/html/glpi/config/config_db.php ``` 2. Vérifier les droits : ```bash sudo chown -R www-data:www-data /var/www/html/glpi/config sudo chmod -R 755 /var/www/html/glpi/config ``` 3. Dans le navigateur, relancer GLPI → interface d’installation : - Serveur SQL : `192.168.100.9` - Utilisateur SQL : `glpiuser` - Mot de passe : `Btssio2017` - Base : `glpidb` GLPI va créer les tables nécessaires. --- ## 6️⃣ Configuration de la réplication Master → Replica ### 6.1 Sur le Master 1. Créer l’utilisateur de réplication : ```sql CREATE USER 'repl'@'192.168.100.10' IDENTIFIED BY 'Btssio2017'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.100.10'; FLUSH PRIVILEGES; ``` 2. Vérifier l’état actuel des binlogs : ```sql SHOW MASTER STATUS; ``` Notez `File` et `Position` pour config du Replica. ### 6.2 Sur le Replica 1. Éditer `/etc/mysql/mariadb.conf.d/50-server.cnf` : ```ini [mysqld] server-id = 2 relay-log = /var/log/mysql/mariadb-relay read_only = 1 ``` 2. Créer le dossier des logs si nécessaire : ```bash sudo mkdir -p /var/log/mysql sudo chown -R mysql:mysql /var/log/mysql sudo chmod 750 /var/log/mysql sudo systemctl restart mariadb ``` 3. Importer la base depuis un dump du master : ```bash mysql -u root -p < /tmp/glpidb.sql ``` 4. Configurer la réplication : ```sql STOP SLAVE; CHANGE MASTER TO MASTER_HOST='192.168.100.9', MASTER_USER='repl', MASTER_PASSWORD='Btssio2017', MASTER_LOG_FILE='mariadb-bin.000001', -- depuis SHOW MASTER STATUS MASTER_LOG_POS=123; -- depuis SHOW MASTER STATUS START SLAVE; ``` 5. Vérifier : ```sql SHOW SLAVE STATUS\G ``` - `Slave_IO_Running: YES` - `Slave_SQL_Running: YES` --- ## 7️⃣ Vérifications et tests 1. Créer une table test sur le Master et vérifier sur le Replica : ```sql CREATE TABLE test_replication (id INT PRIMARY KEY, message VARCHAR(50)); INSERT INTO test_replication VALUES (1, 'replication OK'); SELECT * FROM test_replication; -- sur le Replica ``` 2. Surveiller le retard : ```sql SHOW SLAVE STATUS\G ``` - `Seconds_Behind_Master` → doit être 0 ou proche --- ## 8️⃣ Bonnes pratiques - Faire des backups réguliers (même avec réplication) - Ne pas écrire directement sur le Replica (`read_only = 1`) - Vérifier la réplication après chaque purge de binlogs ou upgrade - Firewall : ouvrir uniquement le port 3306 entre GLPI / Master / Replica