Апр 292012
 

Наконец выбрал несколько минут для описания нативной репликации в posgresql 9.1
Описания установки пакетов я не буду объяснять, их можно найти у меня на сайте или в другом месте.
Добавим на обих серверах в /etc/hosts

10.7.15.1     db_0
10.7.15.3     db_1

Сделаем настройку pg_hba.conf.
# nano /usr/home/pgsql/data/pg_hba.conf
MASTER

# IP мастера.
listen_addresses = '10.15.7.1'
# На slayv
host replication postgres 10.15.7.3/32 trust
host all postgres 10.15.7.3/32 trust
# Тут мы говорим, что доступ имеют все и со всех адресов, с использованием пароля, если нужно убрать пароль то нужно заменить mp5 на trust. #host all all 0.0.0.0/0 mp5

# nano /usr/local/pgsql/data/postgresql.conf
В postgresql.conf

# Ведение журнала с правами чтения для слейва.
wal_level = hot_standby
# Максимальное количество слейвов
max_wal_senders = 2
# Устанавливаем общее хранимое количество кусков лога.
wal_keep_segments = 32
# дублируем журнал в отдельное место.
archive_mode = on
archive_command = 'cp %p /usr/lib/postgresql/9.1/main/archive/%f'
# Максимальное количество подключений.
max_connections = 150
# Размер буфера.
shared_buffers = 2400MB

Теперь мастер перезапустим.
Нам нужно передать базу на slave. Тут сами выбирайте каким методом это будите делать. csp или rsync.
Я использую rsync.

$ psql -c "SELECT pg_start_backup('label', true)"
$ rsync -a /usr/lib/postgresql/9.1/main/ postgres@10.15.7.3:/usr/lib/postgresql/9.1/main/ --exclude postmaster.pid
$ psql -c "SELECT pg_stop_backup()"

Настроим slave.
В postgresql.conf

hot_standby = on
archive_mode = off

Теперь создадим recovery.conf

standby_mode          = 'on'
primary_conninfo = 'host=10.7.15.1 port=5432 user=postgres'
# тиггер нужен для бэкапа, чтобы в случае бэкапа могли остановить процесс репликации и сделать slave доступным на запись.
trigger_file = '/usr/lib/postgresql/9.1/main/trigger'
restore_command = 'cp /usr/lib/postgresql/9.1/main/archive/%f "%p"'

После таких не хитрых манипуляций с конфигурационными файлами и базами, запустим процес репликации.
Проверим на slave

# ps aux | grep receiver
postgres  6878  6872  1 10:31 ?        00:00:01 postgres: wal receiver process   streaming 0/2000000

Это значит, что все замечательно и мы правильно настроили репликацию.
Все настройки базы делались на системе FreeBSD 7.4

 Leave a Reply

(required)

(required)

36 Запросов к базе. 0,344 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.198.210.67