Skip to main content

🗄️ Base de Données

RÈGLE ABSOLUE : Sans accès admin complet à la base de données + backup récent, je ne touche à rien. La data, c'est sacré.

🚨 Accès BDD obligatoires

1. 🔑 Accès administrateur

Je refuse de travailler sans :

ACCÈS BDD ADMIN COMPLET :
Type : MySQL 8.0 / MariaDB 10.6 / PostgreSQL 14 / autre
Serveur : localhost / 192.168.1.100 / database.server.com
Port : 3306 (MySQL) / 5432 (PostgreSQL) / autre

Utilisateur ADMIN :
- User : root / admin / postgres
- Password : [mot de passe exact]
- Droits : ALL PRIVILEGES / SUPERUSER
- Accès distant : Autorisé / IP whitelistée

Interface graphique :
- phpMyAdmin : https://monsite.com/phpmyadmin/
- Adminer : https://monsite.com/adminer/
- pgAdmin : https://pgadmin.org/
- Autre : [URL + identifiants]

Tests obligatoires :
SHOW DATABASES; (MySQL)
\l (PostgreSQL)
SHOW GRANTS FOR CURRENT_USER;

⚠️ Si vous me donnez :

  • Accès utilisateur limité → JE REFUSE, IL ME FAUT ADMIN
  • "Demande à l'hébergeur" → NON, DONNEZ-MOI L'ACCÈS DIRECT
  • Accès temporaire → NON, J'AI BESOIN D'UN ACCÈS PERMANENT
  • "Tu peux pas faire sans ?" → NON, C'EST OBLIGATOIRE

2. 📂 Backup et sauvegardes

Obligatoire avant toute intervention :

BACKUP RÉCENT OBLIGATOIRE :
- Date backup : [moins de 24h]
- Type : Dump SQL complet / Export
- Taille : [en MB/GB]
- Compression : .gz / .zip / non compressé
- Localisation : serveur / FTP / cloud
- Testé : Restauration validée ✅ / ❌

Format attendu :
mysqldump --all-databases --routines --triggers
pg_dumpall > backup.sql
Export complet avec structure + données

Accès backup :
- Localisation : /var/backups/ ou URL
- Méthode récupération : FTP / SCP / Download
- Fréquence : Quotidien / Hebdomadaire

3. 🛠️ Outils de gestion

Accès aux outils d'administration :

OUTILS REQUIS :
Interface web :
- phpMyAdmin / Adminer / pgAdmin
- URL : [complète]
- Login/Password : [exact]

Client lourd (si applicable) :
- MySQL Workbench
- pgAdmin 4
- DBeaver
- Autre : [préciser]

Ligne de commande :
- SSH serveur BDD
- mysql / psql client installé
- Droits sudo si nécessaire

⚙️ Types d'interventions BDD

🔄 Migration base de données

Accès requis :

Source (ancien serveur) :
- Accès BDD complet
- Export/dump possible
- Espace disque suffisant

Destination (nouveau serveur) :
- Accès admin BDD
- Import possible
- Version compatible

Informations nécessaires :
- Taille BDD : [GB]
- Nombre tables : [estimation]
- Contraintes spéciales : [foreign keys, triggers]
- Données sensibles : RGPD / chiffrement

🚀 Optimisation performance

Diagnostic requis :

Métriques actuelles :
- Slow query log activé
- Performance schema accessible
- Métriques serveur (CPU/RAM/Disk)
- Temps réponse moyen

Outils analyse :
- EXPLAIN sur requêtes lentes
- Profiling activé
- Monitoring (Grafana/autre)
- Logs d'erreur accessibles

🔧 Maintenance et réparation

Accès système requis :

Niveau serveur :
- SSH accès root/sudo
- Arrêt/redémarrage service BDD
- Logs système : /var/log/mysql/
- Configuration : my.cnf / postgresql.conf

Opérations maintenance :
- OPTIMIZE TABLE
- REPAIR TABLE
- REINDEX (PostgreSQL)
- ANALYZE TABLE

🧪 Tests que je vais effectuer

1. ✅ Tests de connexion

-- Test connexion admin
SELECT USER(), DATABASE();
SHOW GRANTS;

-- Test performances
SELECT COUNT(*) FROM information_schema.tables;
SHOW VARIABLES LIKE 'innodb%';

-- Test espace disque
SELECT
table_schema AS "Database",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)"
FROM information_schema.tables
GROUP BY table_schema;

2. 🔍 Audit structure

-- Analyse tables
SHOW TABLE STATUS;
SELECT * FROM information_schema.columns
WHERE table_schema = 'ma_base';

-- Index analysis
SHOW INDEX FROM ma_table;
SELECT * FROM information_schema.statistics;

-- Contraintes
SELECT * FROM information_schema.referential_constraints;

3. 📊 Performance testing

-- Requêtes lentes
SELECT * FROM mysql.slow_log LIMIT 10;

-- Processus actifs
SHOW PROCESSLIST;

-- Variables performance
SHOW STATUS LIKE 'Innodb_rows%';
SHOW STATUS LIKE 'Qcache%';

🚫 Ce que je ne fais PAS

Travail sans backup

  • Modification sans sauvegarde → IMPOSSIBLE
  • "On a pas de backup récent" → JE REFUSE L'INTERVENTION
  • "Tu peux faire une sauvegarde" → ELLE DOIT ÊTRE DÉJÀ FAITE

Accès limités

  • Utilisateur sans privilèges → JE VEUX ADMIN ACCESS
  • "Tu peux demander les droits" → NON, DONNEZ-LES MOI
  • Base de prod sans test → IL ME FAUT UN ENVIRONNEMENT DE TEST

Interventions à l'aveugle

  • "Répare la base" sans diagnostic → JE DOIS ANALYSER D'ABORD
  • Urgence sans comprendre → JE DIAGNOSTIQUE AVANT
  • "Ça marche plus" → DONNEZ-MOI LES LOGS D'ERREUR

💰 Facturation BDD

🕐 Temps standard

  • Migration simple : 2-4 heures
  • Migration complexe : 1-2 jours
  • Optimisation performance : 4-8 heures
  • Réparation corruption : 2-8 heures
  • Audit complet : 1 jour
  • Mise en place replication : 4-8 heures

Temps supplémentaire si :

  • Pas de backup récent → +2-4h création backup
  • Accès limités → +2h négociation accès
  • BDD corrompue → +4-12h selon dégâts
  • Version obsolète → +50% temps migration
  • Données volumineuses (>10GB) → +1h par 10GB

💸 Facturation spéciale

  • Urgence critique (BDD inaccessible) : +200% tarif
  • Recovery data après crash : 300€/jour
  • Weekend/nuit : +150% tarif
  • Audit sécurité BDD : 500€/jour
  • Formation équipe : 150€/h

📋 Checklist avant intervention

Avant toute intervention BDD :

  • Accès admin testé et fonctionnel
  • Backup récent (< 24h) disponible et testé
  • Interface graphique accessible
  • Logs d'erreur consultables
  • Espace disque suffisant (min 50% libre)
  • Fenêtre maintenance définie
  • Plan de rollback préparé
  • Contact urgence disponible

🚨 Problèmes BDD fréquents

🔴 "Base de données inaccessible"

Diagnostic :

# Status service
systemctl status mysql
systemctl status postgresql

# Logs d'erreur
tail -f /var/log/mysql/error.log
tail -f /var/log/postgresql/postgresql-*.log

# Espace disque
df -h /var/lib/mysql/

🔴 "Site très lent"

Analyse performance :

-- Requêtes lentes actives
SHOW PROCESSLIST;

-- Verrous
SHOW ENGINE INNODB STATUS;

-- Cache queries
SHOW STATUS LIKE 'Qcache%';

🔴 "Erreur de corruption"

Vérification tables :

CHECK TABLE ma_table;
REPAIR TABLE ma_table;
OPTIMIZE TABLE ma_table;

🎯 Processus de demande BDD

1. 🎫 Créer un ticket avec :

TITRE : [BDD] [TYPE INTERVENTION] - [PROJET/DOMAINE]

TYPE BASE :
- SGBD : MySQL 8.0 / PostgreSQL 14 / autre
- Taille : [GB]
- Tables principales : [nombre/noms]
- Framework : WordPress / Laravel / Custom

INTERVENTION DEMANDÉE :
[ ] Migration
[ ] Optimisation performance
[ ] Réparation/recovery
[ ] Audit/diagnostic
[ ] Mise en place backup
[ ] Autre : [préciser]

ACCÈS FOURNIS :
- Admin BDD : ✅ / ❌
- Interface graphique : ✅ / ❌
- SSH serveur : ✅ / ❌
- Backup récent : ✅ / ❌

URGENCE :
[ ] 🔴 Critique (BDD inaccessible)
[ ] 🟡 Important (lenteurs importantes)
[ ] 🟢 Normal (optimisation/maintenance)

CONTEXTE :
[Description du problème ou objectif]

DÉLAI SOUHAITÉ : [date]
BUDGET : [forfait / temps passé]

2. ⏱️ Réponse sous 2h

  • Validation des accès fournis
  • Diagnostic préliminaire si possible
  • Estimation temps et coût

3. 🔧 Intervention

  • Backup de sécurité
  • Diagnostic complet
  • Intervention technique
  • Tests et validation

🎯 Récapitulatif

Pour toute intervention BDD :

  1. ACCÈS ADMIN complet et testé
  2. BACKUP RÉCENT obligatoire (< 24h)
  3. FENÊTRE MAINTENANCE définie
  4. PLAN DE ROLLBACK préparé
  5. MONITORING post-intervention

Sans backup récent = intervention refusée.


⚠️ RAPPEL : La base de données, c'est le cœur de votre application. Pas d'accès admin + backup = pas d'intervention. Aucune exception.