Для организации процесса обновления кластера PostgreSQL с помощью Patroni в условиях минимальной потери данных можно использовать следующий подход: создать кластер для отката. habr.com Например, если планируется обновление кластера базы PostgreSQL v11 до PostgreSQL v15, можно поднять репликацию с PostgreSQL v15 на ещё один кластер PostgreSQL v11. habr.com Он будет служить кластером для отката, если во время обновления что-то пойдёт не так. habr.com
Некоторые рекомендации по процессу обновления:
- Создать резервную копию. elma365.com Перед выполнением любых действий, связанных с обновлением, нужно создать резервную копию данных и конфигурации PostgreSQL. elma365.com Если на сервере PostgreSQL имеются сторонние базы данных, их резервные копии также необходимо создать. elma365.com
- Не допускать DDL-операций. habr.com На время обновления, от создания бэкапа и до принятия решения о возможности отката, не следует выполнять DDL-операции в базе. habr.com
- Настроить репликацию. habr.com В ходе обновления нужно включить слоты логической репликации в Patroni, а на получателе настроить репликацию по consul-dns лидера. habr.com Это поможет, чтобы падение или недоступность лидера не отменило проведение работ. habr.com
- Переключить приложение. habr.com Это можно сделать за счёт выкатки приложения с новым адресом подключения. habr.com
Для решения проблемы потери данных также рекомендуется использовать резервное копирование, которое может быть логическим и физическим. postgrespro.ru