Установка с нуля 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.conflisten_addresses = '192.168.1.1'
wal_level = hot_standby
max_wal_senders = 3
wal_keep_segments = 64
Перезагружаем
service postgresql-9.5 restart
Настройка Сервера2:
Репликация текущих баз и файлов с Сервера1su 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
Комментариев нет:
Отправить комментарий