PostgreSQL 14 настройка простой репликации

PostgreSQL 14 настройка простой репликации

Коллеги всем привет.

В сегодняшней статье мы поговорим о том как настроить репликацию в PostgreSQL. Если сказать по-простому, то репликация это копирование состояние одного сервера на другой посредством wal журналов. Ну а если сказать точнее то абсолютно любые изменения, которые происходят на основном сервер будут скопированы на сервер реплику.

Скачать и установить Postgresql 14 на Linux CentOS/RHEL 8/7 TAR

Я буду использовать такие понятия в статье как источник и реплика. Источник это основной сервер, его еще могут называть master, а реплика это тот сервер, который будет принимать все изменения с основного сервера, его еще могут называть standby.

Сервера которые я буду использовать.

postgresql1.local - 192.168.2.231 источник

postgresql2.local - 192.168.2.232 реплика

 

Содержание статьи:

  1. Настройка параметров postgresql.conf на источнике.
  2. Создаем пользователя репликации на источнике.
  3. Настройка параметров pg_hba.conf на источнике.
  4. Перенос данных с источника на реплику.
  5. Настройка прав.
  6. Запуск реплики и проверка состояния репликации.

 

1. Настройка параметров postgresql.conf на источнике.

Для самой простой настройки репликации нам всего лишь нужно настроить два параметра в конфигурационном файле postgresql.conf на источнике.

 

Находим параметр wal_level и устанавливаем значения replica.

wal_level = replica

postgresql_replication

 

Находим параметр max_wal_senders и устанавливаем значения 100.

max_wal_senders = 100

postgresql_replication

 

После внесенных изменений обязательно перезапустите базу данных.

$. pg_ctl restart


 

2. Создаем пользователя репликации на источнике.

Репликация в PostgreSQL реализована посредством передачи wal журналов, а за передачу этих журналов у нас будет отвечать учетная запись которую мы сейчас будем создавать. Обычно имя учетной запись которая отвечает за репликацию называют к примеру user_slave, slave или replica. Мы же создадим учетную запись с именем replicator.

sql> CREATE ROLE replicator WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE NOINHERIT REPLICATION CONNECTION LIMIT -1 PASSWORD 'Qwerty123';

postgresql_replication

Главное не забыть указать чтобы у этого пользователя было право репликации. За репликацию в PostgreSQL отвечает привилегия REPLICATION.


 

3. Настройка параметров pg_hba.conf на источнике.

Теперь нам нужно настроить доступ, чтобы с сервера реплики был доступ до сервера источника и наоборот с сервера источника на сервер реплику. За настройку доступа отвечает файл pg_hba.conf. Находим его и добавляем в него:

host replication replicator 192.168.2.231/32 trust
host replication replicator 192.168.2.232/32 trust

postgresql_replication

После вносимых изменений нам нужно либо перезапустить базу данных или выполнить служебную функцию чтобы пере читался базой данных файл pg_hba.conf. Я же использую служебную функцию.

sql> SELECT pg_reload_conf();

postgresql_replication


 

4. Перенос данных с источника на реплику.

Теперь настала очередь перенести все содержимое с сервера источника на сервер реплику. Для этих целей я буду использовать утилиту pg_basebackup. На сервере реплики выполняем перенос данных:

$. pg_basebackup -h 192.168.2.231 -U replicator -D /app/postgresql/pgdatabase/data --write-recovery-conf --progress --verbose

postgresql_replication


 

5. Настройка прав.

После переноса данных с источника на реплику на сервере реплики нужно назначить владельца postgres всех перенесенных директорий.

$. chmod -R 0700 /app/postgresql/pgdatabase/data


 

6. Запуск реплики и проверка состояния репликации.

Теперь можем запустить базу данных на сервере реплике.

$. pg_ctl start

postgresql_replication

База данных на реплике успешно запустилась.

 

Теперь на источнике нам нужно проверить подключиться ли к нему сервер реплика, для этого на источнике выполняем запрос:

sql> select application_name, state, sent_lsn, write_lsn,  sync_state from pg_stat_replication;

postgresql_replication

Сервер реплика успешно подключился к серверу источнику и репликация у нас заработала.


 

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

ПОХОЖИЕ СТАТЬИ

PostgreSQL - Как определить к каким файлам на диске соответствуют таблицы в базе данных
PostgreSQL - Как определить к каким файлам на диске соответствуют таблицы в базе данных
POSTGRESQL
Читать далее
PostgreSQL - Как узнать размер таблиц в базе данных
PostgreSQL - Как узнать размер таблиц в базе данных
POSTGRESQL
Читать далее
PostgreSQL - Как проверить привилегии пользователя
PostgreSQL - Как проверить привилегии пользователя
POSTGRESQL
Читать далее