Як встановити два однакових сервера для автоматичного відмови в 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)
- су - постгреси
- торкніться тригер.txt в / opt / pgsql91 / data /
- recovery.conf стає recovery.done
- psql -c "; SELECT pg_start_backup ('резервна копія', правда)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
- psql -c "; ВИБІР pg_stop_backup ()";
Про нового раба (10.0.66.1)
- створити recovery.conf: cp recovery.done для recovery.conf
- vi recovery.conf змінити ip-адресу: Primary_conninfo = 'host = 10.0.66.2'
- почати postgresql
Отже, зараз мої запитання:
- Це правильний спосіб перемикання ролей?
- Хтось автоматизував цей процес, якщо так, що ви робили?
- Якщо синхронна реплікація включена, я помітив, що новий головний сервер не здійснюватиме жодних транзакцій, оскільки він чекає, коли підлеглий відповість. Однак немає раба, тому що інший сервер, старий майстер, не працює. Це правильно чи мені потрібно тимчасово відключити синхронну реплікацію, поки новий підлеглий не працює?