pre_migration_check.sh 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #!/bin/bash
  2. # Script de vérification avant migration vers MariaDB
  3. echo "════════════════════════════════════════════════════════════"
  4. echo "🔍 Vérification pré-migration MariaDB"
  5. echo "════════════════════════════════════════════════════════════"
  6. echo ""
  7. # Couleurs
  8. RED='\033[0;31m'
  9. GREEN='\033[0;32m'
  10. YELLOW='\033[1;33m'
  11. NC='\033[0m' # No Color
  12. # Fonction de vérification
  13. check_step() {
  14. if [ $? -eq 0 ]; then
  15. echo -e "${GREEN}✅ $1${NC}"
  16. return 0
  17. else
  18. echo -e "${RED}❌ $1${NC}"
  19. return 1
  20. fi
  21. }
  22. # 1. Vérifier Python
  23. echo "1️⃣ Vérification de Python..."
  24. python3 --version
  25. check_step "Python installé"
  26. echo ""
  27. # 2. Vérifier les dépendances Python
  28. echo "2️⃣ Vérification des dépendances Python..."
  29. if python3 -c "import MySQLdb" 2>/dev/null; then
  30. echo -e "${GREEN}✅ mysqlclient installé${NC}"
  31. else
  32. echo -e "${RED}❌ mysqlclient NON installé${NC}"
  33. echo -e "${YELLOW} 💡 Installez-le avec: pip3 install mysqlclient${NC}"
  34. MISSING_DEPS=1
  35. fi
  36. if python3 -c "import django" 2>/dev/null; then
  37. echo -e "${GREEN}✅ Django installé${NC}"
  38. else
  39. echo -e "${RED}❌ Django NON installé${NC}"
  40. MISSING_DEPS=1
  41. fi
  42. if python3 -c "import dotenv" 2>/dev/null; then
  43. echo -e "${GREEN}✅ python-dotenv installé${NC}"
  44. else
  45. echo -e "${RED}❌ python-dotenv NON installé${NC}"
  46. MISSING_DEPS=1
  47. fi
  48. echo ""
  49. # 3. Vérifier le fichier .env
  50. echo "3️⃣ Vérification du fichier .env..."
  51. if [ -f .env ]; then
  52. echo -e "${GREEN}✅ Fichier .env trouvé${NC}"
  53. # Vérifier DB_ENGINE
  54. DB_ENGINE=$(grep "^DB_ENGINE" .env | cut -d'=' -f2)
  55. if [ "$DB_ENGINE" = "mysql" ]; then
  56. echo -e "${GREEN} ✅ DB_ENGINE=mysql${NC}"
  57. else
  58. echo -e "${YELLOW} ⚠️ DB_ENGINE=$DB_ENGINE (devrait être 'mysql' pour MariaDB)${NC}"
  59. fi
  60. # Afficher les paramètres de connexion
  61. echo " Configuration actuelle:"
  62. grep "^DB_" .env | while read line; do
  63. key=$(echo $line | cut -d'=' -f1)
  64. value=$(echo $line | cut -d'=' -f2)
  65. if [ "$key" = "DB_PASSWORD" ]; then
  66. echo " $key=****"
  67. else
  68. echo " $key=$value"
  69. fi
  70. done
  71. else
  72. echo -e "${RED}❌ Fichier .env NON trouvé${NC}"
  73. echo -e "${YELLOW} 💡 Copiez .env.example vers .env et configurez-le${NC}"
  74. exit 1
  75. fi
  76. echo ""
  77. # 4. Vérifier la connexion réseau au serveur MariaDB
  78. echo "4️⃣ Test de connexion réseau..."
  79. DB_HOST=$(grep "^DB_HOST" .env | cut -d'=' -f2)
  80. DB_PORT=$(grep "^DB_PORT" .env | cut -d'=' -f2)
  81. echo " Hôte: $DB_HOST"
  82. echo " Port: $DB_PORT"
  83. # Test de ping (optionnel, peut ne pas fonctionner avec Docker)
  84. if command -v nc &> /dev/null; then
  85. if nc -z -w3 "$DB_HOST" "$DB_PORT" 2>/dev/null; then
  86. echo -e "${GREEN}✅ Port $DB_PORT accessible sur $DB_HOST${NC}"
  87. else
  88. echo -e "${RED}❌ Port $DB_PORT NON accessible sur $DB_HOST${NC}"
  89. echo -e "${YELLOW} 💡 Vérifications:${NC}"
  90. echo -e "${YELLOW} 1. Le conteneur MariaDB est-il démarré?${NC}"
  91. echo -e "${YELLOW} docker ps | grep mariadb${NC}"
  92. echo -e "${YELLOW} 2. Le port est-il exposé?${NC}"
  93. echo -e "${YELLOW} docker port mariadb${NC}"
  94. fi
  95. else
  96. echo -e "${YELLOW}⚠️ 'nc' non disponible, impossible de tester le port${NC}"
  97. fi
  98. echo ""
  99. # 5. Vérifier la base de données SQLite source
  100. echo "5️⃣ Vérification de la base SQLite source..."
  101. if [ -f "db.sqlite3" ]; then
  102. SIZE=$(du -h db.sqlite3 | cut -f1)
  103. echo -e "${GREEN}✅ db.sqlite3 trouvé (taille: $SIZE)${NC}"
  104. else
  105. echo -e "${YELLOW}⚠️ db.sqlite3 non trouvé${NC}"
  106. fi
  107. echo ""
  108. # 6. Résumé
  109. echo "════════════════════════════════════════════════════════════"
  110. echo "📋 Résumé"
  111. echo "════════════════════════════════════════════════════════════"
  112. if [ -n "$MISSING_DEPS" ]; then
  113. echo -e "${RED}❌ Des dépendances manquent${NC}"
  114. echo ""
  115. echo "Installation recommandée:"
  116. echo " pip3 install -r requirements.txt"
  117. echo ""
  118. exit 1
  119. fi
  120. echo -e "${GREEN}✅ Prêt pour la migration!${NC}"
  121. echo ""
  122. echo "Prochaines étapes:"
  123. echo " 1. Assurez-vous que le conteneur MariaDB est démarré"
  124. echo " 2. Vérifiez que DB_HOST pointe vers le bon serveur"
  125. echo " 3. Si DB_HOST='mariadb' ne fonctionne pas depuis votre Mac,"
  126. echo " utilisez l'adresse IP de votre Raspberry Pi"
  127. echo " 4. Lancez le test de connexion:"
  128. echo " python3 scripts/test_mariadb_connection.py"
  129. echo " 5. Si tout fonctionne, lancez la migration:"
  130. echo " python3 scripts/migrate_to_mariadb.py"
  131. echo ""