🗄️ 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 :
- ACCÈS ADMIN complet et testé
- BACKUP RÉCENT obligatoire (< 24h)
- FENÊTRE MAINTENANCE définie
- PLAN DE ROLLBACK préparé
- 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.