Переносим базу PostgreSQL используя репликацию

Сегодня мы поговорим как перенести боевую базу данных PostgreSQL без простоя нашего приложения. Для этого мы будем использовать репликацию.

Для начала нам нужен наш второй сервер, на который мы будем переносить базу, обратите вниманеи что для избежания большенства проблем, вам нужно использовать сервера с одинаковым программным обеспечением и версией PostgreSQL.

Для упрощения исходный сервер я буду называть master, а сервер на который мы будем переносить базу replica.

  1. СДЕЛАЙТЕ БЕКАП БАЗЫ ДАННЫХ И КОНФИГУРАЦИИ НА МАСТЕР СЕРВЕРЕ
  2. Включаем репликацию на мастер сервере, для этого в конфиг postgresql.conf добавляем следующие строки:
wal_level = replica
max_wal_senders = 3
wal_keep_size = 1024
  1. Разрешаем доступ к репликации, для этого в конфиг pg_hba.conf добавляем следующие строки:
host    replication all <replica IP>    scram-sha-256
  1. Производим первичную репликацию, при этом процессе у нас копируется вся информация с мастер сервера на реплику:
pg_basebackup -h <master IP> -D /var/lib/postgresql/data -U <replication_user> -Fp -Xs -P
  1. После этого мы можем запустить нашу реплику.
  2. Подготавливаем наши приложения к переносу, для этого мы должны изменить конфигурацию наших приложений, чтобы они использовали новый сервер.
  3. Останавливаем запись данных на мастер сервере:
SELECT pg_switch_wal();
  1. Переносим приложения на новый сервер.
  2. Повышаем реплику до мастера:
pg_ctl promote -D /var/lib/postgresql/data

Если что-то пошло не так

The database was initialized with LC_COLLATE “en_US.UTF-8”, which is not recognized by setlocale().

sudo locale-gen en_US.UTF-8
localedef -f UTF-8 -i en_US en_US.UTF-8
sudo update-locale

database “postgres” has a collation version mismatch

ALTER DATABASE guard REFRESH COLLATION VERSION;

Уменьшаем размер диска контейнера в Proxmox

Порой наступает момент когда контейнер в Proxmox становится бесполезно большим, и его размер нужно ...

Чистка места на диске после докера

Используя докер на вашем компьютере, вы можете заметить как активно он использует место для контейн...

Размышляем о Головоломке: важность печали и опасность экстремального оптимизма

Совсем недавно (как минимум по меркам даты написания этого сценария), на большие экраны вышла Голов...

Отчёт о сбое Подпольного транскриптора 01.08.23-02.08.23

> Совсем не дают спокойствия в отпуске ## 01.08.23 (GMT+3) - 10:00 - Один из пользователей отправл...

Пожар на лыжном спуске в Капруне 2000 года

Технологическая катастрофа на фуникулёре произошедшая 11 ноября 2000 года в Капруне. В результате т...

Катастрофа DHC-6-400 в Непале 2016 года

Авиационная катастрофа самолёта DHC-6 произошедшая 24 февраля 2016 года в Непале, около деревни Дан...

Катастрофа Ил-18 под Казанью 1963 года

Авиационная катастрофа самолёта Boeing 747 произошедшая 12 августа 1985 года под Токио. Из находивш...

Катастрофа Boeing 747 под Токио 1985 года

Авиационная катастрофа самолёта Boeing 747 произошедшая 12 августа 1985 года под Токио. Из находивш...

Катастрофа Ми-8 в Ямало-Ненецком автономном округе 2008 года

Авиационная катастрофа вертолёта Ми-8 произошедшая 2 июля 2008 года в 340 км от Нижневартовска. Из ...