2021. 6. 19. 07:13ㆍ개발 이야기/Postgresql
현재 구축하고 있는 함쓰 DB는 postgresql 의 stream 방식의 복제로 셋팅을 하였습니다.
처음 pgpool 을 이용한 auto failover 를 구성하려고 하였는데요.
이런저런 포스트를 보면서 지식을 축적하고 있습니다.
그래서 일단 셋팅해놓은 복제 기능을 수동으로 처리하는 방법을 기록으로 남기고자 합니다.
Master 서버에 장애가 생기면 관리자는 수동으로 Slave 를 Master 로 승격시켜야 합니다.
postgresql 12부터는 Slave 동작시
- /var/lib/postgresql/13/main/standby.signal
- /var/lib/postgresql/13/main/postgresql.auto.conf
이렇게 두개의 파일이 생성이 됩니다.
signal 파일은 비어있는 파일이구요
conf 파일은 Master 서버의 커넥션 정보가 들어 있습니다.
한번 강제로 Master 를 stop 시키고 Slave 셋팅법을 보면서 실습해 보겠습니다.
먼저 Master 의 서비스를 정지 시켰습니다.
# systemctl stop postgresql
특별히 인식되는 것 없이 read-only 모드로 동작이 되는군요.
그럼 설정을 바꿔보도록 하겠습니다.
root@ggmoney-db2:/usr/lib/postgresql/13/bin# su - postgres
postgres@ggmoney-db2:~$ cd /usr/lib/postgresql/13/bin
postgres@ggmoney-db2:/usr/lib/postgresql/13/bin$ ./pg_ctl promote -D /var/lib/postgresql/13/main/
waiting for server to promote.... done
server promoted
이렇게 했더니 Slave DB에서도 Write 가 잘됩니다.
그리고 Data 가 있는 경로의 standby.siganl 파일이 사라진것을 확인 할수 있었습니다.
그럼 이제 장애가 났던 서버를 새롭운 Slave 로 셋팅 해야겠죠
처음 Slave 를 설정했던 동일한 방법으로 진행하면 된다고 합니다.
아이피만 서로 바꿔주면 되겠지요
먼저 새로운 Slave 가 기존 Slave 에 접속하기 위해서 동일하게 pg_hba.conf 에 권한을 추가합니다. (New Master)
root@ggmoney-db2:/usr/lib/postgresql/13/bin# vi /etc/postgresql/13/main/pg_hba.conf
# 아래 내용 추가
host replication replication 10.34.96.3/20 md5
# 설정 변경후 재시작
root@ggmoney-db2:/usr/lib/postgresql/13/bin# systemctl restart postgresql
동일하게 새 Slave 에서 새 Master 데이터를 가져오고 서비스 재시작
# 꼭 postgres 로 권한을 변경후 해야한다. 실수로 root 계속 하다가 안되어서 애를 먹었다.
su - postgres
mv /var/lib/postgresql/13/main/ /var/lib/postgresql/13/main_old
pg_basebackup -h 10.34.96.4 -U replication -p 5432 -D /var/lib/postgresql/13/main -Xs -P -R
# 서비스 시작
systemctl start postgresql.service
잘 작동한다.
'개발 이야기 > Postgresql' 카테고리의 다른 글
pgpool 4.1.4 auto fail-over, fail-back (2) | 2021.06.20 |
---|---|
pgpool II 4.1.4 load balance (0) | 2021.06.19 |
vultr 가상화 + ubuntu 21.04 + postgresql 13 replication (0) | 2021.06.16 |
postgresql serial 컬럼 중복 이슈 (0) | 2020.12.13 |