안녕하세요. postgres12를 사용하여 운영중인 시스템이 있습니다.
master-standby로 streaming replication 구성되어 있는 환경에서 장애가 발생하여 문의 드립니다.
(상황)
데이터는 1년에 한번 일괄 갱신이 되고 있습니다. (database 전체 100GB)
이번 데이터 갱신에서 master의 변경 사항이 standby에 적용이 되지 않아 확인해보니 WAL 관련 에러 로그가 반복적으로 나타나고 있습니다.
------------------------------ master log --------------------------------
STATEMENT: START_REPLICATION 0/9000000 TIMELINE 1
ERROR: requested WAL segment 000000010000000000000009 has already been removed
----------------------------- standby log --------------------------------
LOG: started streaming WAL from primary at 0/9000000 on timeline 1
FATAL: could not receive data from WAL stream: ERROR: requested WAL segment 000000010000000000000009 has already been removed
----------------------------- postgres.conf ------------------------------
listen_addresses = '*'
## WRITE-AHEAD LOG
wal_level = replica
# checkpoint
max_wal_size = 1GB
min_wal_size = 80MB
## REPLICATION
max_wal_senders = 2
wal_keep_segments = 80
wal_sender_timeout = 60s
------------------------------------------------------------------------------
(문제)
WAL 관련 문제가 발생하여 기존의 standdby data_dir을 삭제하고
새로운 standby를 구성하려고 하는데 이번에는 pg_basebackup에서 문제가 발생합니다.
waiting for checkpoint to complete 이 부분에서 멈춤 현상이 있는데
혹시 관련 경험 있으신분 있으신가요 ?
--------------------------- 오류가 난 시스템의 log -------------------------
pg_basebackup: initiaing base backup, waiting for checkpoint to complete (((<-----------여기서 시간 한참 소요됨)))
pg_basebackup: error: could not initiate base backup: server closed the connection unexpectedly
this probably means the server terminated abnormally
before or while processing the request.
pg_basebackup: removing contents of data directory "/data/pg_data/"
--------------------------------------------------------------------------------
+)) 문제가 해결되어 혹시나 해결 방법 남겨둡니다!
master - standby 서버의 pg_basebackup이 안됐던 이유는 네트워크 전송 패킷의 문제였습니다.
최대 전송 패킷 (MTU)의 설정을 변경하고 해결 했습니다.
|