Вот по етой http://habrahabr.ru/post/245847/ статье была настроена репликация master -> slave. Стал прикручивать pgpool для балансировки и failover-а на случай падения одной из нод, и наткнулся на неприятный момент, что не понимаю, как работает восстановление master-а.
Если после проверки работоспособности слота репликации я отключаю standby, то после его включения данные с мастера подгружаются. Здесь проблем нет никаких.
После того, как я отключаю master, согласно мануалу http://www.postgresql.org/docs/9.0/static/warm-standby-failover.html я должен на standby создать триггер-файл, который даст знать ноде, что она из standby переквалифицировалась в master.
Соответственно, на етой единственной оставшейся ноде я провожу какие-либо действия CREATE, INSERT и пр., изменяющие базу, и жду восстановления бывшего master-а.
Я запустил master. На рабочей ноде автоматически удаляется триггер-файл, а recovery.conf переименовывается в recovery.done. OK. Что дальше?
Мастер пока не синхронизирован, содержит старые данные, репликация, понятное дело, не работает. В мануалах советуют восстановление всего в три шага:
- pg_start_backup на рабочей ноде, временно выполняющую функции мастера
- rsync папки данных с рабочей базы в устаревшую (кроме postgresql.conf, postmaster.pid, postmaster.opts, pg_log/, recovery.done, pg_xlog/)
- pg_stop_backup на той ноде, на которой мы первую команду делали. На данном етапе я получаю NOTICE: WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup
http://dba.stackexchange.com/questions/83655/postgresql-streaming-replication...
http://habrahabr.ru/post/213409/
Но после етого у меня мастер просто не запускается. Говорит FATAL: could not locate required checkpoint record
В чём ошибка? Я проделываю ети операции вручную, потому что хочу понять, как работает восстановление. pgpool мне уже вынес мозг своими возможностями и кучей скриптов и функций, половины которых я пока не совсем понимаю. Хочу пока изучить, как мастер восстанавливается вручную, а затем снова взятся за pgpool.