Aller au contenu principal
Procidatec
Tous les articles
Tech

Migrations Postgres en zero-downtime : 4 patterns

Ajouter une colonne not null sur une table de 50M de lignes sans coupure de service ? C'est possible, voici comment.

7 min de lecture·par Karim Belkacem, Tech Lead Mobile, Procidatec

Pattern 1 — Expand / contract

Ajouter d'abord en nullable, backfiller, puis poser la contrainte. Trois déploiements, zéro coupure.

Pattern 2 — Renommer en deux étapes

Créer la nouvelle colonne, dupliquer en écriture, basculer les lectures, puis supprimer l'ancienne.

Pattern 3 — Backfill chunké

Ne jamais lock une grosse table. Chunker par batch de 10 000 lignes avec un sleep entre les batchs.

Pattern 4 — Outils dédiés

pg_squeeze ou pg_repack pour les retassages d'index sans lock long. Indispensables sur les tables volumineuses.

Notre règle

Aucune migration en prod sans plan rollback documenté. Aucune.

Vous voulez en discuter ?

Cet article a soulevé une question pour votre boîte ? Échangeons 30 minutes, sans engagement.