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