Репликация Postgresql 11.2 в режиме Master-> Slave

Оцените статью

Задачка довольно типовая, но мы немного усложним условия и сделаем репликацию двух инстансов Postgresql завернутых в Docker.

Операции на мастер-хосте

Первым делом создаем пользователя от имени которого будет осуществляться репликация.

# docker exec -it postgresql /bin/bash
# su postgres
$ psql
postgres=# CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD ‘P@SSWORD’;
postgres=# \q
/ $ exit
# exit

В файле pg_hb.conf разрешаем подключения этому пользователю с хоста где будет распологаться реплика.

host  replication   replica_user  10.77.111.108/32   md5

В конфигурационный файл вносим правки.

wal_level = logical
wal_log_hints = on

Так-как мы используем контейнер, по reload и аналогично restart для службы сервера postgresql производится немного иначе.

# docker exec -it postgresql /bin/bash
# su postgres
$ pg_ctl reload

Операции на slave-хосте

Останавливаем контейнер с postgresql, запускаем в интерактивном режиме, удаляем существующую базу и командой pg_basebackup копируем базу с мастер-узла, после чего запускаем контейнер. Обратите внимание, что вместо команды docker-compose я буду использовать алиас dc.

# dc stop postgresql
# dc run postgresql /bin/bash
# rm -rf /var/lib/postgresql/data/*
# pg_basebackup -h 10.51.0.100 -U replica_user -X stream -C -S replica_1 -v -R -W -D /var/lib/postgresql/data/
# exit
# dc start postgresql

Проверяем статус репликации

bash-4.4# su postgres
/ $ psql
psql (11.2)
Type «help» for help.postgres=# SELECT client_addr, state FROM pg_stat_replication;
client_addr  |   state
—————+————
10.77.111.108 | streaming
(1 row)

Опционально создаем общее хранилище WAL-файлов

Создаем общее файловое NFS-хранилище по инструкции «Настройка NFS клиент-сервер в CentOS» и смонтировано оно будет в каталог /mnt/nfs где создадим подкаталог /mnt/nfs/wal.

Добавляем тома монтирования в контейнер.

volumes:
— /mnt/nfs/wal:/wal

В конфигурацию мастер ноды добавляем параметры.

archive_mode = on
archive_command = ‘test ! -f /mnt/nfs/wal/%f && cp %p /mnt/nfs/wal/%f’

В конфигурацию slave ноде докидываем параметры на восстановление и очистку старых архивов.

restore_command = ‘cp /mnt/nfs/wal/%f %p’
archive_cleanup_command = ‘pg_archivecleanup  /mnt/nfs/wal/ %r’

Related Posts

Работа с APT-репозитариями через HTTP/HTTPS прокси

Основные способы настройки Есть несколько вариантов задать прокси для apt — от временного (для одной команды) до постоянного (системного). Вариант 1. Временный прокси (в командной строке) Используйте параметр -o при…

Установка OlnyOffice DocSpace в Ubuntu Linux

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You Missed

Работа с APT-репозитариями через HTTP/HTTPS прокси

Работа с APT-репозитариями через HTTP/HTTPS прокси

Установка OlnyOffice DocSpace в Ubuntu Linux

Установка OlnyOffice DocSpace в Ubuntu Linux

Диагностика работы камеры (USB или интегрированная) в Ubuntu Linux

Диагностика работы камеры (USB или интегрированная) в Ubuntu Linux

Настройка простой конфигурации OpenVPN клиент-сервер

Настройка простой конфигурации OpenVPN клиент-сервер

Установка Windows Server 2012/2012R2 в качестве гостевой виртуальной машины в Proxmox

Установка Windows Server 2012/2012R2 в качестве гостевой виртуальной машины в Proxmox

Создание бесплатной виртуальной машины в облаке Cloud.ru

Создание бесплатной виртуальной машины в облаке Cloud.ru