1
0

CHECKLIST_MIGRATION.md 5.5 KB

✅ 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

    docker exec -it mariadb mysql -u root -p
    
  • [ ] Base de données créée

    CREATE DATABASE IF NOT EXISTS duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • [ ] Utilisateur créé avec un mot de passe fort

    CREATE USER IF NOT EXISTS 'duhaz_user'@'%' IDENTIFIED BY 'MON_MOT_DE_PASSE';
    
  • [ ] Privilèges accordés

    GRANT ALL PRIVILEGES ON duhaz_blog.* TO 'duhaz_user'@'%';
    FLUSH PRIVILEGES;
    
  • [ ] Port 3306 exposé (si connexion depuis Mac)

    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

    cd /Users/duhaz/projets/blog-duhaz
    
  • [ ] Dépendances installées

    pip install -r requirements.txt
    
  • [ ] mysqlclient installé correctement

    python -c "import MySQLdb; print('OK')"
    

Étape 3 : Configuration du fichier .env

  • [ ] Fichier .env modifié avec :

    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

    telnet IP_DU_RPI 3306
    # Doit se connecter
    
  • [ ] Test de connexion Python réussi

    python scripts/test_mariadb_connection.py
    # Tous les tests doivent passer ✅
    

Étape 5 : Migration des données

  • [ ] Script de migration exécuté

    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é

    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

    DEBUG=False
    ALLOWED_HOSTS=duhaz.fr,www.duhaz.fr
    
  • [ ] Migrations appliquées sur la production

    python manage.py migrate
    
  • [ ] Static files collectés

    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

    cp db.sqlite3 backup/db.sqlite3.final_backup_$(date +%Y%m%d)
    
  • [ ] Backup du JSON

    # Le fichier backup/sqlite_data.json est déjà créé
    
  • Suppression de db.sqlite3 du dossier projet

    # 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é

    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

    ALTER DATABASE duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
  • [ ] Tables vérifiées

    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