database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10006 게시물 읽기
No. 10006
tablespace를 실수로 삭제했을 때 어떻게 해야 할까요?
작성자
조근수(jo1413)
작성일
2018-09-03 21:22ⓒ
2018-09-03 21:54ⓜ
조회수
6,247

## tablespace를 실수로 삭제했을 때 어떻게 해야 할까요?

안녕하세요.
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에는 연락해봤는데 아직 따로 연락이 없네요..

- 비용 내고서라도 고치고 싶습니다..

이 글에 대한 댓글이 총 1건 있습니다.

네 없습니다.

데이터베이스는 디스크 여유 공간 없는 문제로 장애가 생겼을 경우, 이 문제를 해결 하기 위해 PostgreSQL에서 제공하는 명령을 이용하는 것은 아주 위험한 일입니다.  -  더 망칠 경우가 더 큽니다.

윗 글을 보면 그 하지 말아야 작업들을 열심히 했으니, 자료를 깔끔하게 복구한다는 것은 거의 불가능합니다.

 

현재 상황에서는 자료 파일들 가운데 읽은 수 있는 파일을 찾아서 그 파일을 저수준으로 덤프해서 쓸 수 있는 자료를 최대한 많이 뽑는 것 빼고는 없을 것 같네요.

 

문제가 잘 풀리길 바랍니다. 비용을 지불한다면, hexdump, C 언어 struct 자료형을 잘 알고 있는 C 개발자를 찾아서 PostgreSQL 저장 기법을 살펴보고 최대한 자료를 꺼낼 수 있는 작업에 투자를 하셔야 할 것 같네요.

김상기(ioseph)님이 2018-09-03 23:09에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10009postgres .s.pgsql.5432 파일을 삭제해버렸습니다. [1]
부탁해요
2018-09-10
4755
10008서버에 PGSQL 데이터베이스를 사용할까 하는데요.. [4]
전성용
2018-09-06
5159
10007postgresql.kr 홈페이지 디자인이 변경되었네요
ㅅㅅ
2018-09-05
5052
10006tablespace를 실수로 삭제했을 때 어떻게 해야 할까요? [1]
조근수
2018-09-03
6247
10005두개의 필드간 날짜 검색 질문있습니다. [1]
산적
2018-09-03
5116
10002인덱스, 테이블의 테이블스페이스 정보 [3]
초버
2018-08-30
5253
10001pgAdmin3 function 만드는 방법 수정 부탁드립니다. [1]
왕촙
2018-08-29
5182
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다