Как настроить два одинаковых сервера для автоматического перехода на другой ресурс в PostgreSQL 9.1.
Операционные системы
Centos 5
PostgreSQL 9.1 скомпилирован из исходного кода
Учетная запись пользователя postgres существует на обеих машинах и имеет ssh-пароль без пароля для подключения к обеим машинам.
Моя текущая настройка:
Конфигурация главного сервера:
postgresql.conf:
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16
wal_keep_segments = 8
archive_mode = on
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'
pg_hba.conf:
host replication all 10.0.66.1/32 trust
host replication all 10.0.66.2/32 trust
Резервный сервер
postgresql.conf и pg_hba.conf идентичны тем, которые настроены на главном сервере.
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
Благодаря hzRoot я теперь понимаю, как переключить сервер с резервного на главный.
Используя следующие команды, я могу синхронизировать нового ведомого с новым ведущим, а затем получить резервную копию репликации и запустить ее.
О новом мастере (10.0.66.2)
- су - постгрес
- коснитесь trigger.txt в / opt / pgsql91 / data /
- recovery.conf становится recovery.done
- psql -c "; SELECT pg_start_backup ('backup', true)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
- psql -c "; SELECT pg_stop_backup ()";
На новом рабе (10.0.66.1)
- создайте recovery.conf: cp recovery.done to recovery.conf
- vi recovery.conf изменить IP-адрес: primary_conninfo = 'host = 10.0.66.2'
- начать postgresql
Итак, мои вопросы сейчас:
- Это правильный способ поменяться ролями?
- Кто-нибудь автоматизировал этот процесс, если да, что вы делали?
- Если синхронная репликация включена, я заметил, что новый главный сервер не будет совершать никаких транзакций, потому что он ожидает ответа ведомого. Однако нет ведомого, потому что другой сервер, старый мастер не работает. Это правильно, или мне нужно временно отключить синхронную репликацию, когда новый ведомый не работает?
источник
Ответы:
Проверьте repmrg :
Это делает две вещи:
Для автоматического перехода на другой ресурс repmgrd делает свое дело и не является SPOF в вашей сети, как pgPool. Тем не менее, все еще важно следить за всеми демонами и восстанавливать их после сбоя.
Версия 2.0 скоро будет выпущена, включая RPM.
источник
в вашем файле recovery.conf вы должны добавить строку, сообщающую postgres о переходе от главного к подчиненному. ты должен добавить
когда вы создаете этот файл по заданному пути. узлы будут меняться. (файл не содержит ничего, это просто триггер)
вы можете найти дополнительную информацию о потоковой репликации
с другой стороны, возможно, будет возможно сделать его автоматически созданным с помощью некоторых хитростей, но лучше использовать инструменты мониторинга и ручное переключение при сбое.
источник
Кто-нибудь рассматривал возможность использования pgpool-II для этого?
http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html
Я настроил репликацию для PostgreSQL. Кажется, что сложная часть случается, когда старый мастер возвращается.
Из того, что я прочитал, pgpool может автоматизировать большую часть этого. Однако я не уверен, использует ли функции репликации, уже присутствующие в PostgreSQL 9.1.
источник