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 4804 게시물 읽기
No. 4804
시스템 카탈로그 깨짐
작성자
심재후(educom)
작성일
2003-07-22 06:19
조회수
1,958

저희 회사 데이터베이스(PostgreSQL 6.x)의 시스템 카탈로그가 깨진것 같습니다. (정말 울고 싶습니당...) 사건의 전말은 다음과 같습니다...

 

이 데이터베이스를 수년간 사용해온 터라 pg_log 파일이 상당히 커졌습니다(약 80메가). 그래서 pg_log 파일을 삭제하면 속도가 개선될 것이라는 막연한 기대를 갖고 pg_log 파일을 다른 이름으로 리네임하고, touch 명령으로 빈 pg_log 파일을 하나 생성했습니다(솔직히, 저는 pg_log 파일이 아파치웹서버의 access 로그처럼 단순히 접속 기록만 쌓이는 파일인줄 알았습니다. 게다가, DB를 셧다운시키지 않고 이 짓을 한것이 문제의 근원인것 같습니다).

 

그런데, 그 다음부터 데이터베이스에 접속은 되나, 파일을 하나도 못찾는 현상이 발생했습니다. 그리하여 허겁지겁 리네임한 원래의 pg_log 파일을 다시 pg_log라고 리네임하여 시스템을 재기동하였으나... 역시 테이블을 못찾는 현상이 계속되었습니다... 허거걱.

 

그래서 제가 아는 유일한 복구 명령인 vacuum 명령을 리눅스 콘솔에서도 해보고(vacuumdb), psql로 들어가서도 해봤습니다... 잠깐 복구되는듯 하더니(여러개의 DB 중에서 특정한 하나의 DB에서 5~6개의 파일이 \d 명령으로 보이더군요), 다시 접속해 보니 아무소용이 없습니다(처음처럼 모든 DB의 테이블이 없다고 나옵니다).

 

확인 결과 PGDATA 디렉토리에는 테이블, 인덱스 관련 데이터 파일들이 멀쩡히 살아 있습니다. psql 로 특정 DB접속해서 'vacuum 테이블'명 하면 잘 실행되구요...

 

이런 현상들을 종합해 보면 제 짧은 소견으로는 pg_class 파일 같은 카탈로그 파일이 깨진것이 아닌가 생각해 봅니다(pg_class 파일을 Hex Editor 로 열어보면 테이블명 등 데이터가 잘 보이기는 합니다).

 

어떻게 하면 좋을까요??? 데이터 파일이 있으니, 수동으로 시스템 카탈로그 파일 만들어 주면 될까요?

 

지금은 물리적인 파일의 자료구조를 파악해서 텍스트 파일로 덤프라도 뜨려고 시도하는 중입니다...

 

물론, 평소에 DB백업 제대로 안한 제 잘못이라는거 잘 압니다... 저도 무지하게 반성하고 있습니다... 그러하오니, 너무 나무라지는 마시고, 제발 해결책-해결책이 아니라 해결책을 찾는 아이디어라도-을 알려주셨으면 합니다. 꼭 부탁합니다.

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

http://database.sarang.net/?inc=read&aid=4516&criteria=pgsql&subcrit=tutorials&record_idx=6&currpg=1

 

문서가 한글로 된 문서 가운데는 유일한 문서인데, 이놈이 7.2.x 이상 버전에 대해서 이야기를 하고 있네요. 6.x 버전이라면, pg_class 테이블이 깨어진 경우 과연 복구가 가능할까? 라는 회의적인 생각이 듭니다.

 

버전이 옛버전인것으로 봐서 자료가 꽤 있을터인데, 복구 하는데, 고생이 심하시겠습니다.

 

제 MSN이 i0seph@hotmail.com 입니다. 이곳으로 PostgreSQL 서버 접근할 수 있는 계정을 알려주시면 제가 한번 보기는 할게요. :) 재밌을 것 같네요.

김상기(ioseph)님이 2003-07-22 10:13에 작성한 댓글입니다.

헐 -.-; 백업의 중요성을 일깨워주는 *번뜩*

갑자기 pgsql에서 리플리케이션을 해보지 않았다는 생각이 드네요

mysql처럼 쉽게 리플리케이션이 될런지? =_=

일정 시간 간격으로 덤프해서 저장하는 것은 좀 거시기 하지 않나 생각합니다 =_=

좋은 백업 방법이 있는지요? ^^;

pgsql <-> mysql 쌍방향 리플리케이션이 가능해 진다면 좋다는 생각이 요즘 들고 있습니다 -.-

신기배(nonun)님이 2003-07-22 10:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4810pg_relcheck 이 존재하지 않습니다. [1]
김종화
2003-07-24
1220
48087.1 -&gt; 7.3으로 가기 힘들군요...ㅜ.ㅜ [4]
김영호
2003-07-22
1620
4807질문] libpq.lib 이용시 PostgreSQL 서버 버전 확인하는 방법은? [1]
김상기
2003-07-22
2479
4804시스템 카탈로그 깨짐 [2]
심재후
2003-07-22
1958
4802윈도에서 /etc/hosts.allow 파일과 /etc/hosts.deny 파일..? [1]
이호경
2003-07-21
1835
4801[질문] where조건절에서 in 사용시 index사용여부.. [3]
박근준
2003-07-20
1504
4800사용자 인증시 crypt..는 ..? [2]
이호경
2003-07-20
1551
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다