1
0

MIGRATION_MARIADB.md 4.7 KB

Guide de migration SQLite → MariaDB

Prérequis

  1. Conteneur MariaDB : Vous devez avoir un conteneur MariaDB qui tourne sur votre Raspberry Pi
  2. Accès réseau : Votre machine de développement doit pouvoir accéder au conteneur MariaDB
  3. Backup : Assurez-vous d'avoir une sauvegarde de votre base SQLite actuelle

Étape 1 : Configurer MariaDB

Sur le Raspberry Pi (conteneur Docker)

Connectez-vous au conteneur MariaDB :

docker exec -it mariadb mysql -u root -p

Puis exécutez le script SQL :

-- Créer la base de données
CREATE DATABASE IF NOT EXISTS duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Créer l'utilisateur (changez le mot de passe !)
CREATE USER IF NOT EXISTS 'duhaz_user'@'%' IDENTIFIED BY 'votre_mot_de_passe_securise';

-- Donner les privilèges
GRANT ALL PRIVILEGES ON duhaz_blog.* TO 'duhaz_user'@'%';
FLUSH PRIVILEGES;

Vous pouvez aussi utiliser le script fourni :

docker exec -i mariadb mysql -u root -p < scripts/setup_mariadb.sql

Étape 2 : Installer les dépendances

Sur votre machine de développement :

cd /Users/duhaz/projets/blog-duhaz
pip install -r requirements.txt

Cela installera mysqlclient pour la connexion à MariaDB.

Étape 3 : Configuration du fichier .env

Pour la migration (étape d'export)

Gardez d'abord la configuration SQLite pour exporter les données :

# .env
SECRET_KEY=votre_cle
DEBUG=True

# Base de données SQLite (pour l'export)
# DATABASE_NAME=db.sqlite3

# Laisser commenté pour l'instant
# DB_ENGINE=mysql
# DB_NAME=duhaz_blog
# DB_USER=duhaz_user
# DB_PASSWORD=votre_mot_de_passe
# DB_HOST=mariadb
# DB_PORT=3306

ALLOWED_HOSTS=localhost,127.0.0.1

Étape 4 : Exécuter le script de migration

python scripts/migrate_to_mariadb.py

Le script va :

  1. ✅ Exporter toutes vos données de SQLite vers backup/sqlite_data.json
  2. ⏸️ Vous demander de modifier le .env pour activer MariaDB
  3. ✅ Créer les tables dans MariaDB
  4. ✅ Importer toutes vos données
  5. ✅ Vérifier que tout est bien migré

Quand le script vous le demande

Modifiez votre .env pour activer MariaDB :

# .env
SECRET_KEY=votre_cle
DEBUG=True

# Base de données SQLite (ancienne config - commentée)
# DATABASE_NAME=db.sqlite3

# Base de données MariaDB (ACTIVE)
DB_ENGINE=mysql
DB_NAME=duhaz_blog
DB_USER=duhaz_user
DB_PASSWORD=votre_mot_de_passe_securise
DB_HOST=mariadb  # ou l'IP de votre RPI
DB_PORT=3306

ALLOWED_HOSTS=localhost,127.0.0.1

Puis appuyez sur Entrée pour continuer la migration.

Étape 5 : Vérification

Testez votre application :

python manage.py runserver

Vérifiez que :

  • ✅ Tous vos articles sont présents
  • ✅ Les utilisateurs peuvent se connecter
  • ✅ L'administration fonctionne
  • ✅ Les images et médias sont accessibles

Étape 6 : Commandes utiles

Vérifier la connexion à MariaDB

python manage.py dbshell

Créer un superutilisateur (si nécessaire)

python manage.py createsuperuser

Vérifier les migrations

python manage.py showmigrations

Faire un backup de MariaDB

# Sur le Raspberry Pi
docker exec mariadb mysqldump -u root -p duhaz_blog > backup_mariadb_$(date +%Y%m%d).sql

Dépannage

Erreur de connexion

Si vous ne pouvez pas vous connecter à MariaDB :

  1. Vérifiez que le conteneur MariaDB est bien démarré :

    docker ps | grep mariadb
    
  2. Vérifiez que le port 3306 est exposé :

    docker port mariadb
    
  3. Testez la connexion réseau :

    telnet <ip_raspberry_pi> 3306
    
  4. Vérifiez les logs du conteneur :

    docker logs mariadb
    

Erreur "Access denied"

Vérifiez que l'utilisateur a bien les bonnes permissions :

docker exec -it mariadb mysql -u root -p
SHOW GRANTS FOR 'duhaz_user'@'%';

Erreur de charset

Si vous avez des problèmes d'encodage (caractères accentués) :

ALTER DATABASE duhaz_blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Notes importantes

  1. Backup : Le fichier backup/sqlite_data.json contient toutes vos données. Conservez-le !
  2. SQLite : Ne supprimez pas db.sqlite3 tant que vous n'avez pas confirmé que tout fonctionne
  3. Mot de passe : Utilisez un mot de passe fort pour l'utilisateur MariaDB
  4. Réseau : Si votre RPI est sur un réseau local, utilisez son IP au lieu de "mariadb" dans DB_HOST

Rollback (retour en arrière)

Si quelque chose ne va pas, vous pouvez revenir à SQLite :

  1. Modifiez .env pour commenter les lignes MariaDB
  2. Décommentez DATABASE_NAME=db.sqlite3
  3. Redémarrez l'application

Vos données SQLite originales sont intactes dans db.sqlite3.