воскресенье, 28 апреля 2019 г.

PostgreSQL 10 — Потоковая репликация

PostgreSQL 10 — Потоковая репликация с отработкой фейловера
Потоковая репликация в PostgreSQL и пример фейловера
Потоковая репликация в PostgreSQL 9.6
How to Set-Up Master-Slave Replication for PostgreSQL 9.6 on Ubuntu 16.04
Еще пара слов о потоковой репликации в postgres…
Отладка и устранение проблем в PostgreSQL Streaming Replication
Потоковая репликация в PostgreSQL 9.6
How to Set-Up Master-Slave Replication for PostgreSQL 9.6 on Ubuntu 16.04

Есть два сервера:
1. master ud1804 192.168.1.251/24

2. slave ud1804s 192.168.1.249/24

 

Настроим master

$ sudo su postgres
$ psql
postgres=# CREATE USER replica REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD 'pass';


$ sudo nano /etc/postgresql/10/main/pg_hba.conf

Добавим:
host    replication     replica         192.168.1.249/32        md5
Сохранить.

Мы указываем что репликация разрешена пользователю с именем replica, подключающемуся с адреса 192.168.1.249 с авторизацией по паролю


$ sudo nano /etc/postgresql/10/main/postgresql.conf

Добавить:



hot_standby = on
max_wal_senders = 10
wal_level = replica
wal_keep_segments = 32

# Для настройки архивного резервного копирования разкомментировать:
#archive_mode = on
#archive_command = 'pg_probackup-10 archive-push -B /backup --compress --instance main --wal-file-path %p --wal-file-name %f'

Сохранить.

$ sudo systemctl restart postgresql.service

 

Настроим slave:

$ sudo systemctl stop postgresql.service

$ sudo rm -R /var/lib/postgresql/10/main/


$ sudo su postgres
$ pg_basebackup -P -R -X stream -c fast -h 192.168.1.251 -U replica -D /var/lib/postgresql/10/main/
Пароль:
23693/23693 КБ (100%), табличное пространство 1/1



$ sudo systemctl start postgresql.service

$ sudo cat /var/lib/postgresql/10/main/recovery.conf
standby_mode = 'on'
primary_conninfo = 'user=replica password=pass host=192.168.1.251 port=5432 sslmode=prefer sslcompression=1 krbsrvname=postgres target_session_attrs=any'

На master

$ sudo su postgres
$ psql -l
$ psql -c "CREATE DATABASE example;"
$ pgbench -i -s 50 example
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"



Тоже увидим на slave

$ sudo su postgres
$ psql -l
$ psql -U postgres -d example -c "select pg_size_pretty( pg_database_size('example'))"
 
Другие фишки можно допилить
в соответствии с приведенными в начале статьи ссылками.

PostgreSQL 10 — Потоковая репликация с отработкой фейловера








Комментариев нет:

Отправить комментарий