После установки PostgreSQL, для безопасности необходимо настроить репликацию.

Репликация позволяет иметь актуальную копию баз на данный момент времени с минимальным расхождением. И в случае падения основного сервера — восстановить базы из запасного.

Настраиваем Master и Slave

nano /etc/postgresql/9.6/main/postgresql.conf

listen_addresses = '*' # IP адреса этого сервера
wal_level = replica
max_wal_senders = 3 # По количеству серверов реплик
wal_keep_segments = 128

Настраиваем Master

nano /etc/postgresql/9.6/main/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    replication     replication     192.168.0.0/24         md5

Создаем пользователя replication с паролем 1234

su postgres
psql
CREATE ROLE replication WITH REPLICATION PASSWORD '1234' LOGIN;

Перезапускаем

\q
su
systemctl restart postgresql && systemctl status postgresql

Настраиваем Slave

Останавливаем

systemctl stop postgresql

nano /etc/postgresql/9.6/main/postgresql.conf

Исправим

hot_standby = on

Копируем начальное состояние мастера

rm -Rf /var/lib/postgresql/9.6/main/*
su postgres
pg_basebackup -h IP_Мастера -D /var/lib/postgresql/9.6/main -R -P -U replication --xlog-method=stream
su

nano /var/lib/postgresql/9.6/main/recovery.conf

Добавим

trigger_file = '/var/lib/postgresql/9.6/main/trigger_file'

Запускаем сервер

su
systemctl start postgresql && systemctl status postgresql

Проверяем работу

su postgres

На мастере — подключенные слейвы и их отставание

psql -c 'SELECT *,pg_xlog_location_diff(s.sent_location,s.replay_location) byte_lag FROM pg_stat_replication s;'

На слейве — расхождение с мастером (когда была синхронизация)

psql -c "SELECT now()-pg_last_xact_replay_timestamp();"

Размер базы — делаем запрос на мастере и на слейве и видим, как меняется размер базы на слейве вслед за мастером

psql -c "SELECT pg_size_pretty( pg_database_size( 'gilev83' ) );"

Что дальше?

При падении мастера — на слейве остается максимально актуальная база, и мы ее можем забэкапить и восстановить на мастере второй базой, без затирания основной.