안녕하세요.
postgresql 9.6을 쓰다가 제 실수로 장애가 발생했네요.
1. 노트북에서 DB를 돌리다가 용량 부족으로 뻗음(512GB SSD)
2. 제가 DB에서 지운 행들이 꽤 많아서 용량을 줄여보기 위해서 vacuum full 실행
- https://blog.gaerae.com/2015/09/postgresql-vacuum-fsm.html
- http://postgresql.kr/docs/9.3/routine-vacuuming.html
- http://hochul.net/blog/postgresql-vacuum-optimization/
3. 용량 부족으로 인해서 vacuum full 실행하다가 중단됨
4. vacuum without disk space로 검색하니 이게 나옴
- https://www.dbrnd.com/…/postgresql-execute-vacuum-full-wit…/
5. tablespace을 외장 하드로 잡아놓고 vacuum full 실행
6. 한 6시간 돌렸으나 완료가 안되서 취소함
7. pg_dump로 backup 돌리고 있었음(dump하면 180GB 정도)
8. 나가봐야 되서 외장하드디스크에 용량도 없고 tablespace를 rm -rf로 삭제함(이때 backup dump 용량이 60GB 정도 였음, 난 tablespace가 tmp 파일인줄 알고 삭제했는데 그게 아니었음)
- http://postgresql.kr/docs/9.6/manage-ag-tablespaces.html
8. 집에 다시 들어와서 확인해 보니 FATAL: could not open file "pg_tblspc/176967555/PG_9.1_201105231/123304298/135285149": No such file or directory
9. pg_dump로 백업받은걸 다른 컴퓨터에서 복구해봤더니 30%만 복구됐음. 복구할 때 tblspc를 찾을 수 없다고 에러 발생
10. 맥 복구 EaseUS Data Recovery Wizard 10만원 주고 사서 tablespaces 삭제한 것들 복구해서 원래 컴퓨터에 넣었더니 ERROR: invalid page in block 뜸.
11. 최후의 방법으로는 https://lxadm.com/Repairing_broken_PostgreSQL_datab…/_tables 이렇게 해야할것 같은데 그 전까지는 원본 하드디스크는 건드리지 않을 예정
## 결론
- pg_basebackup 으로 복구하거나 현재 base 파일들은 남았으니 이걸로 어떻게 복구할 수 없을까 생각중입니다.
- 좀 더 좋은 방법이 있을까요?
- https://www.postgresql.org/suppo…/professional_support/asia/ 에서 K4M INC에는 연락해봤는데 아직 따로 연락이 없네요..
- 비용 내고서라도 고치고 싶습니다..