# ✅ Checklist de migration SQLite → MariaDB ## Avant de commencer - [ ] J'ai un backup de ma base SQLite actuelle (`db.sqlite3`) - [ ] Le conteneur MariaDB tourne sur mon Raspberry Pi - [ ] Je peux accéder au Raspberry Pi (SSH ou accès physique) - [ ] J'ai noté l'IP du Raspberry Pi : `_______________` ## Étape 1 : Configuration de MariaDB (sur le RPI) - [ ] Connecté au conteneur MariaDB ```bash docker exec -it mariadb mysql -u root -p ``` - [ ] Base de données créée ```sql CREATE DATABASE IF NOT EXISTS duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` - [ ] Utilisateur créé avec un mot de passe fort ```sql CREATE USER IF NOT EXISTS 'duhaz_user'@'%' IDENTIFIED BY 'MON_MOT_DE_PASSE'; ``` - [ ] Privilèges accordés ```sql GRANT ALL PRIVILEGES ON duhaz_blog.* TO 'duhaz_user'@'%'; FLUSH PRIVILEGES; ``` - [ ] Port 3306 exposé (si connexion depuis Mac) ```bash docker port mariadb # Doit afficher : 3306/tcp -> 0.0.0.0:3306 ``` ## Étape 2 : Installation des dépendances (sur votre Mac) - [ ] Navigué vers le projet ```bash cd /Users/duhaz/projets/blog-duhaz ``` - [ ] Dépendances installées ```bash pip install -r requirements.txt ``` - [ ] `mysqlclient` installé correctement ```bash python -c "import MySQLdb; print('OK')" ``` ## Étape 3 : Configuration du fichier .env - [ ] Fichier `.env` modifié avec : ```env DB_ENGINE=mysql DB_NAME=duhaz_blog DB_USER=duhaz_user DB_PASSWORD=mon_mot_de_passe DB_HOST=_______________ # IP du RPI ou "mariadb" DB_PORT=3306 ``` - [ ] Mot de passe saisi correctement (attention aux espaces) - [ ] Host configuré selon le contexte : - `mariadb` si Django tourne sur le même RPI - `192.168.x.x` (IP du RPI) si Django tourne sur Mac ## Étape 4 : Test de connexion - [ ] Test réseau réussi ```bash telnet IP_DU_RPI 3306 # Doit se connecter ``` - [ ] Test de connexion Python réussi ```bash python scripts/test_mariadb_connection.py # Tous les tests doivent passer ✅ ``` ## Étape 5 : Migration des données - [ ] Script de migration exécuté ```bash python scripts/migrate_to_mariadb.py ``` - [ ] Export SQLite réussi ``` ✅ Données exportées vers backup/sqlite_data.json ``` - [ ] Fichier `.env` vérifié (DB_ENGINE=mysql) - [ ] Import MariaDB réussi ``` ✅ Données importées avec succès! ``` - [ ] Vérification affichée ``` 👥 Utilisateurs: X 📝 Articles: Y ``` ## Étape 6 : Tests post-migration - [ ] Serveur de développement lancé ```bash python manage.py runserver ``` - [ ] Page d'accueil accessible (http://localhost:8000) - [ ] Articles visibles sur le blog - [ ] Connexion admin fonctionnelle (http://localhost:8000/admin) - [ ] Création d'un nouvel article de test - [ ] Modification d'un article existant - [ ] Médias/images toujours accessibles ## Étape 7 : Vérifications de production Si vous déployez sur le RPI : - [ ] Variables d'environnement de production configurées ```env DEBUG=False ALLOWED_HOSTS=duhaz.fr,www.duhaz.fr ``` - [ ] Migrations appliquées sur la production ```bash python manage.py migrate ``` - [ ] Static files collectés ```bash python manage.py collectstatic ``` - [ ] Application redémarrée - [ ] Site web accessible publiquement - [ ] HTTPS fonctionnel ## Étape 8 : Nettoyage (après confirmation) ⚠️ **NE FAITES CECI QU'APRÈS AVOIR CONFIRMÉ QUE TOUT FONCTIONNE** ⚠️ - [ ] ✅ Tout fonctionne parfaitement depuis au moins 24h - [ ] Backup final de la base SQLite ```bash cp db.sqlite3 backup/db.sqlite3.final_backup_$(date +%Y%m%d) ``` - [ ] Backup du JSON ```bash # Le fichier backup/sqlite_data.json est déjà créé ``` - [ ] (Optionnel) Suppression de `db.sqlite3` du dossier projet ```bash # Gardez-le quelques semaines par sécurité ! mv db.sqlite3 backup/ ``` ## Backups à conserver Gardez ces fichiers en sécurité : - [ ] `backup/sqlite_data.json` - Export JSON complet - [ ] `backup/db.sqlite3.final_backup_YYYYMMDD` - Base SQLite finale - [ ] Backup MariaDB régulier configuré ```bash docker exec mariadb mysqldump -u root -p duhaz_blog > backup_$(date +%Y%m%d).sql ``` ## En cas de problème ### La migration a échoué 1. ❌ Ne paniquez pas ! 2. ✅ Votre `db.sqlite3` est intact 3. ✅ Changez `DB_ENGINE` dans `.env` pour revenir à SQLite 4. ✅ Relancez l'application avec SQLite 5. 🔍 Consultez `docs/MIGRATION_MARIADB.md` pour le dépannage ### Performances lentes - [ ] Index vérifiés sur les colonnes fréquemment requêtées - [ ] Configuration MariaDB optimisée (my.cnf) - [ ] Connexions pooling configurées si nécessaire ### Erreurs de charset - [ ] Base de données en UTF8MB4 ```sql ALTER DATABASE duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` - [ ] Tables vérifiées ```sql SHOW TABLE STATUS LIKE '%'; ``` ## Notes importantes - 🔒 **Sécurité** : Utilisez des mots de passe forts - 💾 **Backups** : Automatisez les sauvegardes MariaDB - 🔍 **Monitoring** : Surveillez les logs MariaDB - 📊 **Performance** : MariaDB est généralement plus rapide que SQLite pour les sites avec du trafic ## Support - 📚 Documentation complète : `docs/MIGRATION_MARIADB.md` - 🌐 Configuration réseau : `docs/CONFIGURATION_RESEAU_MARIADB.md` - ⚡ Aide-mémoire rapide : `MIGRATION_MARIADB_RAPIDE.md` --- **Date de migration** : _______________ **Signature** : _______________ **Durée totale** : _______________ minutes