Переносим базу 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 становится бесполезно большим, и его размер нужно...

2024-03-15T19:57:15.426Z

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

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

2023-07-19T23:50:24.025Z

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

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

2024-07-30T06:53:22.867Z

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

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

2023-08-02T10:22:11.219Z

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

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

2024-07-11T23:36:25.264Z

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

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

2024-07-11T20:27:59.981Z

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

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

2024-07-09T15:21:28.423Z

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

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

2024-07-11T20:57:01.658Z

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

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

2024-07-11T12:29:41.199Z