글 작성자: 모두의 근삼이

replication 에러 상황에서 postgresql 컨테이너를 강제로 재기동 했더니 저런 로그가 뜨면서 DB접속이 안된다. 당연히 replication도 계속 에러상황이다.

2020-07-07 11:02:55.161 GMT [59] LOG:  could not remove file "pg_wal/000000010000002A0000003A": Device or resource busy
2020-07-07 11:02:56.969 GMT [59] LOG:  could not remove file "pg_wal/0000000100000004000000DF": Device or resource busy
2020-07-07 11:02:56.969 GMT [303434] ERROR:  requested WAL segment 000000010000000300000064 has already been removed

가장 간단한 해결법은 pg_resetwal 명령어를 이용해 트렌젝션로그를 마지막 정상 시점으로 초기화 해주는 것이다. 에러 시점 근처로 일부 데이터 손실이 있을 수 있지만, 별도의 백업 dump가 없는 상황에서 가장 간편하게 DB를 정상상태로 복원할 수 있는 방법이었다.

pg_resetwal [데이터 디렉토리] -f

단, 해당 명령어는 postgresql 서비스가 종료된 상태에서 실행해야 한다.

반응형