Réplication en continu et WAL
Configurez une réplication physique en continu fondée sur WAL, surveillez le retard et mettez en place des répliques synchrones pour des écritures sans perte de données.
Réplication en continu et WAL est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Pourquoi répliquer ?
La réplication répond à plusieurs objectifs à la fois :
- HA — survivre à une défaillance du serveur primaire
- Mise à l’échelle des lectures — décharger les SELECT sur les réplicas
- Sauvegarde / PITR — archivage continu
- Distribution géographique — des réplicas proches des utilisateurs
WAL : journal à écriture anticipée
Chaque écriture est d’abord enregistrée dans le WAL. Le WAL garantit la durabilité et constitue le fondement de la réplication : le WAL est diffusé vers un réplica → le réplica rejoue le WAL → le réplica est à jour.
Réplication physique en continu
Flux WAL identique octet par octet du serveur primaire vers le réplica :
- Le réplica est une copie binaire du serveur primaire
- Même version de PostgreSQL
- Tout le cluster est répliqué (toutes les bases de données et toutes les tables)
- En lecture seule
Configuration : serveur primaire
Configurez le serveur primaire dans postgresql.conf :
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
-- pg_hba.conf: allow replication connections
host replication replicator 10.0.0.0/24 md5Configuration : réplica
Créez la sauvegarde de base, puis démarrez avec primary_conninfo :
pg_basebackup -h primary -D /var/lib/postgresql/data -U replicator -W -X stream -P
-- postgresql.conf on replica:
primary_conninfo = 'host=primary port=5432 user=replicator password=...'
-- Touch standby.signal file and start:
touch /var/lib/postgresql/data/standby.signalRéplication synchrone ou asynchrone
- Asynchrone (par défaut) — le serveur primaire valide la transaction sans attendre : le réplica peut prendre du retard
- Synchrone — le serveur primaire attend la confirmation du réplica avant COMMIT : aucune perte de données, mais des performances moindres
-- Synchronous configuration on primary:
synchronous_commit = on
synchronous_standby_names = 'replica1, replica2'Retard de réplication
Les réplicas asynchrones prennent du retard sur le serveur primaire. Surveillez :
SELECT client_addr, state, sent_lsn, write_lsn, replay_lsn,
pg_wal_lsn_diff(sent_lsn, replay_lsn) AS replay_lag_bytes
FROM pg_stat_replication;Emplacements de réplication
Les emplacements garantissent que le serveur primaire conserve le WAL jusqu’à ce que le réplica l’ait consommé :
SELECT pg_create_physical_replication_slot('replica1');
-- On replica:
primary_slot_name = 'replica1'Piège des emplacements
Si un réplica se déconnecte et ne se reconnecte jamais, son emplacement empêche le nettoyage du WAL : le disque se remplit. Supprimez les emplacements inutilisés :
SELECT pg_drop_replication_slot('replica1');Réplicas en cascade
Un réplica peut lui-même transmettre le WAL à d’autres réplicas, ce qui réduit la charge du serveur primaire.
Serveur de secours actif
Par défaut, les réplicas acceptent les requêtes en lecture seule (hot_standby = on). Les requêtes de lecture longues sur le réplica peuvent retarder la relecture du WAL : ajustez max_standby_streaming_delay.
Promotion
Pour faire d’un réplica le nouveau serveur primaire :
pg_ctl promote -D /var/lib/postgresql/data
-- Or in SQL:
SELECT pg_promote();Récapitulatif
La réplication en continu = transmission et relecture du WAL.
- Physique et identique au niveau binaire
- Asynchrone par défaut : synchrone pour éviter toute perte de données
- Les emplacements conservent le WAL, mais nécessitent une surveillance attentive
- La promotion transforme un réplica en serveur primaire
Vérification rapide
Quel est le principal risque si vous N’utilisez PAS d’emplacement de réplication pour un réplica en continu ?
Questions Fréquemment Posées
La leçon « Réplication en continu et WAL » est-elle gratuite ?
Oui — le texte complet de « Réplication en continu et WAL » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Réplication en continu et WAL » ?
Configurez une réplication physique en continu fondée sur WAL, surveillez le retard et mettez en place des répliques synchrones pour des écritures sans perte de données. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Réplication en continu et WAL » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Réplication en continu et WAL
- Réplication logique pour le partitionnement horizontal
- Basculement et élection du leader (Patroni, Stolon)
- Répliques de lecture et routage des connexions