PostgreSQL 복제와 승격 · 복제의 구조 · 실습
복제를 세우고 승격시킨다
목표
주 서버와 대기 서버를 한 파드 안에서 직접 세우고, 복제를 붙이고,
승격까지 해 봅니다. 마지막에는 타임라인이 갈라지는 것을 눈으로 봅니다.
왜 중요한가
"HA 를 구축했다" 는 말은 대개 한 번도 장애 조치를 해 본 적 없다는 뜻입니다.
설정은 맞는데 막상 승격해 보면 대기 서버가 안 따라와 있거나, 승격은 됐는데
애플리케이션이 옛 주소를 보고 있거나, 옛 주 서버를 되붙이려다 데이터를
망칩니다.
이 실습은 그 한 바퀴를 미리 돌아 봅니다.
환경
이 파드는 postgres 계정으로 돕니다(실습 파드는 capability 가 없어서
su 로 사용자를 바꿀 수 없습니다). 그래서 su 나 sudo 없이 그냥 치면 됩니다.
psql 주 서버(5432)에 바로 붙습니다psql -h 127.0.0.1 -p 5433 대기 서버대기 서버에는 -h 127.0.0.1 을 꼭 붙이세요. 이 환경은 유닉스 소켓
디렉터리를 홈 아래로 옮겨 두었습니다(컨테이너 런타임이 /run 을 tmpfs 로
덮어써서 기본 경로가 사라지기 때문입니다).
단계
1. 주 서버를 복제 가능하게
2. 복제 계정과 슬롯
3. 베이스백업 → /var/lib/postgresql/standby
4. 대기 서버를 5433 으로 기동
5. 복제 확인 → /root/db/05-repl.txt
6. 읽기 전용 확인 → /root/db/06-readonly.txt
7. 승격
8. 타임라인 비교 → /root/db/08-timeline.txt
참고
- 오류가 나면
/var/log/postgresql.log(주)와/var/log/labhub/standby.log pg_stat_replication은 주 서버에서만 보입니다. 대기 서버에서 보면
(대기)를 봅니다.
비어 있는 게 정상입니다.
단계 8개
- 주 서버를 복제 가능하게
- 복제 계정과 슬롯
- 베이스백업
- 대기 서버를 5433 으로
- 정말 복제되는지
- 대기 서버는 왜 쓰기를 거부하나
- 승격
- 타임라인이 갈라진다