вторник, 15 ноября 2016 г.

Установка и настройка поточной репликации PostgreSQL 9.5 (CentOS)


Установка с нуля PostgreSQL и настройка поточной репликации между двумя серверами

Сервер1 = 192.168.1.1
Сервер2 = 192.168.1.2

На обоих серверах:

Установка:
yum -y install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
yum -y install postgresql95 postgresql95-server postgresql95-contrib postgresql95-libs


Изменение директории PostgreSQL
(через symlink)
Вывести текущую директорию
ps auxw |  grep postgres | grep -- -D


mkdir /opt/data
chown -R postgres /opt/
rm -rf /var/lib/pgsql/9.5/data;  - обязательно нужно очистить.
ln -s /opt/data /var/lib/pgsql/9.5/data
chmod -R 700 /var/lib/pgsql/9.5/data/

Инициализация:
/usr/pgsql-9.5/bin/postgresql95-setup initdb

Настройка авторизации 
vi /var/lib/pgsql/9.5/data/pg_hba.conf
 
 Блок
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
 Заменить на 
# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 md5 
 
 
*
host    all             all             127.0.0.1/32            trust
значит под учёткой postgres подключение к СУБД будет без пароля только из локали.

Добавить право на репликацию для Сервера2

host    replication     postgres        192.168.1.2/32         trust

Перезагружаем
service postgresql-9.5 restart

Автозагрузка
chkconfig postgresql-9.5 on

Настройка Сервера1:

vi /var/lib/pgsql/9.5/data/postgresql.conf

listen_addresses = '192.168.1.1'
wal_level = hot_standby
max_wal_senders = 3
wal_keep_segments = 64

Перезагружаем
service postgresql-9.5 restart

Настройка Сервера2:

Репликация текущих баз и файлов с Сервера1
su postgres
rm -rf /var/lib/pgsql/9.5/data/*;  - обязательно нужно очистить.
pg_basebackup -P -R -X stream -c fast -h 192.168.1.1 -U postgres -D /var/lib/pgsql/9.5/data/
 
Прописываем режим StandBy
vi /var/lib/pgsql/9.5/data/postgresql.conf
     listen_addresses = '192.168.1.2'
     hot_standby = on

Проверяем, что файл выглядит так
vi /var/lib/pgsql/9.5/data/recovery.conf
     standby_mode = 'on'
     primary_conninfo = 'user=postgres host=192.168.1.1 port=5432 sslmode=prefer      sslcompression=1 krbsrvname=postgres'
     trigger_file='/var/lib/pgsql/9.5/data/trigger'

Перезагружаем
service postgresql-9.5 restart

Проверка


В логах
tail -f /var/lib/pgsql/9.5/data/pg_log/postgresql-*.log
     LOG:  entering standby mode
     LOG:  redo starts at 4/8D225FB0
     LOG:  consistent recovery state reached at 4/8D2260C0
     LOG:  record with zero length at 4/8D2260C0
     LOG:  database system is ready to accept read only connections
     LOG:  started streaming WAL from primary at 4/8D000000 on timeline 1

В процессах
ps aux |grep receiver
     postgres 13211  0.0  0.1 349052  4088 ?        Ss   17:30   0:00 postgres: wal receiver


pg_stat_replication

sudo -u postgres psql
SELECT * FROM pg_stat_replication;
     -[ RECORD 1 ]----+------------------------------
     pid              | 13212
     usesysid         | 10
     usename          | postgres
     application_name | walreceiver
     client_addr      | 192.168.1.2
     client_hostname  |
     client_port      | 60897
     backend_start    | 2014-03-04 17:30:23.901967+06
     state            | streaming
     sent_location    | 4/8D2260C0
     write_location   | 4/8D2260C0
     flush_location   | 4/8D2260C0
     replay_location  | 4/8D2260C0
     sync_priority    | 0
     sync_state       | async

Создать базу на Сервере1 и проверить её появление на Сервере2

Сервер1
sudo -u postgres psql
CREATE DATABASE test;
\l
\q

Сервер2
sudo -u postgres psql
\l
\q


 

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

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