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
Читати далі