PostgreSQL 9.1에서 자동 장애 조치를 위해 두 대의 동일한 서버를 어떻게 설정합니까?
OS
소스에서 컴파일 된 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)
- su-postgres
- / opt / pgsql91 / data /의 trigger.txt를 터치하십시오.
- recovery.conf가 recovery가됩니다.
- psql -c "; SELECT pg_start_backup ( 'backup', true)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ --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 시작
그래서 내 질문은 다음과 같습니다.
- 이것이 역할을 전환하는 올바른 방법입니까?
- 이 과정을 자동화 한 사람이 있습니까? 그렇다면 어떻게 했습니까?
- 동기식 복제가 활성화되면 새 마스터 서버가 슬레이브가 응답하기를 기다리고 있기 때문에 트랜잭션을 커밋하지 않습니다. 그러나 다른 서버 인 이전 마스터가 다운 되었기 때문에 슬레이브가 없습니다. 이것이 맞습니까? 아니면 새 슬레이브가 다운 된 상태에서 동기식 복제를 일시적으로 비활성화해야합니까?