Рецепт 16. Баланс между durability и self-healing в синхронной репликации

Новая опция dataDurability в CloudNativePG 1.25: required vs preferred. Как мигрировать с deprecated minSyncReplicas / maxSyncReplicas без потери self-healing.
Опубликовано:

В CloudNativePG 1.25 появилась более тонкая настройка синхронной репликации PostgreSQL — опция dataDurability в .spec.postgresql.synchronous. Она закрывает архитектурный пробел, появившийся в 1.24, и наконец позволяет выбирать: строгая durability или продолжение работы при отказе реплик.

Что было не так в 1.24

В CloudNativePG 1.24 появился новый API для синхронной репликации, но возникла проблема:

Цитата автора:

«Первый вариант обычно нравится платформенным инженерам, ориентированным на self-healing и высокую доступность; второй ближе к ожиданиям DBA от синхронной репликации.»

Из-за такой полярности часть пользователей, опиравшихся на self-healing, не могла мигрировать на новый API без потери поведения.

dataDurability в 1.25

В новой версии в .spec.postgresql.synchronous появилось поле dataDurability с двумя режимами:

Миграция со старого формата

Было (deprecated):

YAML
minSyncReplicas: 1
maxSyncReplicas: 1
Нажмите, чтобы развернуть и увидеть больше

Эквивалент в новом API с сохранением self-healing-поведения:

YAML
postgresql:
  synchronous:
    method: any
    number: 1
    dataDurability: preferred
Нажмите, чтобы развернуть и увидеть больше

Если же команда хочет строгую durability (RPO = 0 при любых обстоятельствах) — переключаемся на:

YAML
postgresql:
  synchronous:
    method: any
    number: 1
    dataDurability: required
Нажмите, чтобы развернуть и увидеть больше

Какой режим выбрать

Связанные материалы

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша