Documentation ZFS: Difference between revisions
Created page with "= Guide Complet : Déploiement de MariaDB avec ZFS sur db-B-001 = Last updated: Friday, November 28, 2025 == Introduction == Ce guide complet explique comment configurer MariaDB avec InnoDB sur un serveur FreeBSD utilisant ZFS pour le stockage, en montant spécifiquement les datasets ''mysql-innodb-data'' et ''mysql-innodb-logs'' en dehors du répertoire ''/var/db/mysql''. == Prérequis == * Serveur FreeBSD 14.3 avec ZFS et MariaDB 10.11.15 installés * Pool ZFS ''arco..." |
(No difference)
|
Latest revision as of 17:20, 28 November 2025
Guide Complet : Déploiement de MariaDB avec ZFS sur db-B-001
Last updated: Friday, November 28, 2025
Introduction
Ce guide complet explique comment configurer MariaDB avec InnoDB sur un serveur FreeBSD utilisant ZFS pour le stockage, en montant spécifiquement les datasets mysql-innodb-data et mysql-innodb-logs en dehors du répertoire /var/db/mysql.
Prérequis
- Serveur FreeBSD 14.3 avec ZFS et MariaDB 10.11.15 installés
- Pool ZFS arcology opérationnel avec espace disponible
- Accès root ou sudo
- Connaissances de base en administration système et ZFS
Architecture Cible
- Datasets ZFS dédiés pour les données et logs InnoDB
- Points de montage personnalisés : /mysql-innodb-data et /mysql-innodb-logs
- Configuration optimisée pour les performances
- Système de sauvegarde via snapshots ZFS
Fichiers de Configuration MariaDB
Sur FreeBSD avec MariaDB :
- **Fichier principal de configuration** : /usr/local/etc/mysql/my.cnf
- Fichiers complémentaires :
* /usr/local/etc/my.cnf (lien symbolique vers le fichier principal) * /usr/local/etc/mysql/conf.d/server.cnf (configuration spécifique)
Étapes de Déploiement
Phase 1 : Préparation de l'Environnement
1.1 Vérification des versions
mysql --version
zpool list
zfs list
1.2 Création des datasets ZFS
# Création avec points de montage personnalisés
sudo zfs create -o mountpoint=/mysql-innodb-data arcology/mysql-innodb-data
sudo zfs create -o mountpoint=/mysql-innodb-logs arcology/mysql-innodb-logs
# Configuration des propriétés
sudo zfs set recordsize=16K arcology/mysql-innodb-data
sudo zfs set recordsize=128K arcology/mysql-innodb-logs
sudo zfs set primarycache=metadata arcology/mysql-innodb-data
sudo zfs set primarycache=metadata arcology/mysql-innodb-logs
Phase 2 : Configuration des Permissions
sudo chown -R mysql:mysql /mysql-innodb-data
sudo chown -R mysql:mysql /mysql-innodb-logs
sudo chmod -R 750 /mysql-innodb-data
sudo chmod -R 750 /mysql-innodb-logs
Phase 3 : Migration des Données
3.1 Arrêt du service MariaDB
sudo service mysql-server stop
3.2 Déplacement des fichiers
sudo mv /var/db/mysql/ibdata1 /mysql-innodb-data/
sudo mv /var/db/mysql/ib_logfile* /mysql-innodb-logs/
3.3 Création des liens symboliques
sudo ln -s /mysql-innodb-data/ibdata1 /var/db/mysql/ibdata1
sudo ln -s /mysql-innodb-logs/ib_logfile* /var/db/mysql/
Phase 4 : Configuration de MariaDB
4.1 Modification du fichier principal
sudo nano /usr/local/etc/mysql/my.cnf
Ajouter/modifier dans le fichier principal :
[mysqld]
datadir = /var/db/mysql
innodb_data_home_dir = /mysql-innodb-data
innodb_log_group_home_dir = /mysql-innodb-logs
innodb_data_file_path = ibdata1:10M:autoextend
skip-innodb_doublewrite
4.2 Vérification de la configuration
Pour vérifier que le bon fichier est utilisé :
mysql --print-defaults
4.3 Structure des fichiers de configuration
- /usr/local/etc/my.cnf → Lien symbolique vers /usr/local/etc/mysql/my.cnf
- /usr/local/etc/mysql/my.cnf → **Fichier principal de configuration**
- /usr/local/etc/mysql/conf.d/ → Répertoire pour les configurations modulaires
Phase 5 : Optimisation
5.1 Activation de la compression
sudo zfs set compression=lz4 arcology/mysql-innodb-data
sudo zfs set compression=lz4 arcology/mysql-innodb-logs
5.2 Autres optimisations ZFS
# Désactivation du cache flush si matériel approprié
sudo zfs set zfs_nocacheflush=1 arcology
# Configuration de l'ARC pour métadonnées seulement
sudo zfs set primarycache=metadata arcology
Phase 6 : Redémarrage et Vérification
sudo service mysql-server start
sudo tail -n 20 /var/db/mysql/windriver.err
Vérification SQL :
SHOW VARIABLES LIKE 'innodb_data_home_dir';
SHOW VARIABLES LIKE 'innodb_log_group_home_dir';
Phase 7 : Sauvegarde et Restauration
7.1 Création de snapshots
sudo zfs snapshot arcology/mysql-innodb-data@$(date +%Y%m%d)
sudo zfs snapshot arcology/mysql-innodb-logs@$(date +%Y%m%d)
7.2 Procédure de restauration
# Arrêter MariaDB avant restauration
sudo service mysql-server stop
# Restauration
sudo zfs rollback arcology/mysql-innodb-data@20231128
sudo zfs rollback arcology/mysql-innodb-logs@20231128
# Redémarrer MariaDB
sudo service mysql-server start
Bonnes Pratiques pour la Configuration
1. **Toujours modifier le fichier principal** : /usr/local/etc/mysql/my.cnf 2. Pour des configurations spécifiques, créer des fichiers dans /usr/local/etc/mysql/conf.d/ 3. Vérifier la syntaxe après modification :
sudo mysqld --verbose --help 2>/dev/null | head
4. Après modification, toujours redémarrer le service :
sudo service mysql-server restart
Résolution des Problèmes Courants
Problème : MariaDB ne démarre pas
- Vérifier les permissions :
ls -la /mysql-innodb-data
ls -la /var/db/mysql/
- Consulter les logs :
sudo tail -n 50 /var/db/mysql/windriver.err- Vérifier la syntaxe du fichier de configuration :
sudo mysql --print-defaults
sudo mysqld --verbose --help 2>/dev/null | head
Problème : Performances dégradées
- Vérifier la fragmentation :
zfs get fragmentation arcology/mysql-innodb-data
- Surveiller l'utilisation mémoire :
top
- Ajuster recordsize si nécessaire (16K pour OLTP, 128K pour les logs)
Commandes Utiles
| Action | Commande |
|---|---|
| Vérifier l'état du pool ZFS | zpool status arcology
|
| Lister les datasets | zfs list -t all
|
| Vérifier les points de montage | df -h | grep mysql
|
| Voir les propriétés d'un dataset | zfs get all arcology/mysql-innodb-data
|
| Prendre un snapshot daté | sudo zfs snapshot arcology/mysql-innodb-data@$(date +%Y%m%d_%H%M)
|
| Voir les snapshots existants | zfs list -t snapshot
|
| Vérifier le fichier de configuration utilisé | mysql --print-defaults
|
| Vérifier la syntaxe de configuration | sudo mysqld --verbose --help 2>/dev/null | head
|
Annexes
Configuration Avancée ZFS
Pour les environnements de production, considérer :
# Séparation des logs ZIL sur SSD
sudo zpool add arcology log /dev/ada2
# Configuration L2ARC pour cache supplémentaire
sudo zpool add arcology cache /dev/ada3
Exemple de Script de Sauvegarde
#!/bin/sh
# Sauvegarde quotidienne des datasets MariaDB
POOL="arcology"
DATE=$(date +%Y%m%d_%H%M)
# Verrouillage des tables
mysql -e "FLUSH TABLES WITH READ LOCK; SYSTEM zfs snapshot $POOL/mysql-innodb-data@db_backup_$DATE; SYSTEM zfs snapshot $POOL/mysql-innodb-logs@db_backup_$DATE; UNLOCK TABLES;"
Vérification de la Configuration
Pour voir tous les paramètres actifs :
SHOW VARIABLES;
Pour voir les paramètres InnoDB spécifiques :
SHOW VARIABLES LIKE 'innodb%';
