9 장, 자동 백업 구성에서 설명된 자동 백업 기능을 사용한 경우 라이브 데이터베이스가 손상되었다면 핫 백업 복사본을 복원할 수 있습니다.
이 절에서는 서로 다른 두 자동 백업 복원 방법에 대해 설명합니다.
백업을 복원하기 전에 다음을 확인해야 합니다.
활성 데이터베이스를 손상시킨 트랜잭션을 진단했는지 여부
새 아카이브가 손상되지 않도록 손상 트랜잭션을 제거했거나 수정했는지 여부
손상된 데이터베이스를 다른 디렉토리나 이동식 매체에 복사하여 보관했는지 여부반드시 기술 지원부에 문의해야 합니다.
라이브 데이터베이스가 손상된 경우 핫 백업을 가장 먼저 선택해야 합니다. 핫 백업을 복원하려면 다음 단계를 수행합니다.
적용되지 않았거나 손상된 활성 데이터베이스 디렉토리에 쓰기 위해 열려 있는 로그 파일을 식별합니다.
쓰기 위해 열려 있는 로그를 닫습니다. 이 로그에는 최신 트랜잭션이 포함되어 있습니다.
새 (복구) 디렉토리를 만듭니다.
현재 핫 백업 복사본을 새 복구 데이터베이스 디렉토리에 복사합니다.
손상된 라이브 데이터베이스 디렉토리의 log.* 파일을 새 복구 데이터베이스 디렉토리에 복사합니다.
데이터베이스의 아카이브 복사본을 저장하는 경우 경우 활성 데이터베이스에 적용되지 않은 로그를 아카이브 디렉토리에 복사하여 아카이브 백업 복사를 완료합니다.
새 복구 데이터베이스에 대해 지정된 -c -h 옵션과 함께 db_recover를 실행합니다.
예를 들어, 새 복구 디렉토리가 recoverydb인 경우 명령은 다음과 같습니다.
db_recover -c -h recoverydb
log.* 파일을 새 복구 디렉토리에 그대로 둡니다.
db_recover 프로그램이 로그 파일을 새 복구 데이터베이스에 적용했지만 버전 4.2부터 Berkeley DB는 로그 파일이 그대로 유지되는 것으로 기대합니다.
새 복구 디렉토리에 있는 데이터베이스 파일에 대해 db_verify를 실행합니다. db_verify를 실행하려면 다음을 수행합니다.
다음 명령을 사용하여 Calendar Server를 중지합니다.
cd /opt/SUNWics5/cal/sbin
./stop-cal
다음 명령을 사용하여 Calendar Server 데이터베이스(csdb)의 다른 복사본을 만듭니다.
cp -Rp /var/opt/SUNWics5/csdb /var/opt/SUNWics5/csdb.db_verify
csdb의 복사본에서 db_verify를 실행합니다.
원본 csdb에서 db_verify를 실행하지 마십시오.
LD_LIBRARY_PATH=/opt/SUNWics5/cal/lib export LD_LIBRARY_PATH cd /opt/SUNWics5/cal/tools/unsupported/bin ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50alarms.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50calprops.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50events.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50gse.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50journals.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50recurring.db ./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50todos.db ./db_verify -o -h /var/opt/SUNWics5/csdb.db_verify ics50deletelog.db
ics50deletelog.db에 대해 -o 옵션을 사용하여 db_verify를 실행합니다.
어떠한 오류 메시지도 표시되지 않으면 db_verify가 성공적으로 실행된 것입니다. 데이터베이스 파일이 손상된 경우 오류 메시지가 표시되지 않습니다. 예를 들면 다음과 같습니다.
./db_verify -h /var/opt/SUNWics5/csdb.db_verify ics50todos.db db_verify:Page 612: last item on page sorted greater than parent entry db_verify: Page 612: incorrect next_pgno 885 found in leaf chain (should be 501) db_verify: Page 0: page 501 encountered a second time on free list db_verify: DB->verify: ics50todos.db: DB_VERIFY_BAD: Database verification failed |
새 복구 디렉토리에 대해 csdb -v list를 실행합니다.
새 복구 디렉토리가 앞의 세 복구 단계를 모두 통과한 경우 손상된 이전 활성 데이터베이스를 새 복구 데이터베이스로 대체합니다.
새 스냅샷 역할을 하도록 새 라이브 데이터베이스를 핫 백업 디렉토리에 복사합니다.
다음에 정기 스냅샷을 찍을 때까지 모든 새 로그가 이 복사본에 적용됩니다.
Calendar Server를 시작합니다.
새 복구 디렉토리에서 단계가 실패할 경우 다음과 같은 방법으로 손상되지 않은 이전 핫 백업을 식별합니다.
핫 백업에 대한 역방향 작업을 통해 db_verify 및 csdb -v list를 하나씩 차례로 실행하여 손상되지 않은 최신 복사본을 찾습니다.
통과한 첫 번째 핫 백업 복사본을 라이브 데이터베이스 디렉토리에 복원할 수 있습니다.
핫 백업을 복원하려면의 설명대로 손상된 라이브 데이터베이스를 손상 없는 핫 백업으로 대체합니다. (먼저 22.5.8.1 복원하기 전에를 읽으십시오.)
핫 백업과 아카이브 백업이 없는 경우 기술 지원부에 문의하십시오. 아카이브 백업이 있는 경우 아카이브 백업을 복원하려면 다음에 나오는 절차를 따르십시오. (또한 22.5.8.1 복원하기 전에를 참조하십시오.)
손상되지 않은 핫 백업이 없지만 아카이브 백업과 해당 트랜잭션 로그가 있는 경우 다음 단계를 수행하여 손상되지 않은 최신 아카이브 데이터베이스 버전을 복원할 수 있습니다.
적용되지 않았거나 손상된 활성 데이터베이스 디렉토리에 쓰기 위해 열려 있는 로그 파일을 식별합니다.
쓰기 위해 열려 있는 로그를 닫습니다. 이 로그에는 최신 트랜잭션이 포함되어 있습니다.
새 (복구) 디렉토리를 만듭니다.
최신 아카이브 복사본과 해당 로그 파일을 새 복구 데이터베이스 디렉토리에 복사합니다.
손상된 라이브 데이터베이스 디렉토리의 적용되지 않은 log.* 파일을 새 복구 데이터베이스 디렉토리에 복사합니다.
새 복구 데이터베이스에 대해 지정된 -c -h 옵션과 함께 db_recover를 실행합니다.
예를 들어, 새 복구 디렉토리가 recoverydb인 경우 명령은 다음과 같습니다.
db_recover -c -h recoverydb
log.* 파일을 새 복구 디렉토리에 그대로 둡니다.
db_recover 프로그램이 로그 파일을 새 복구 데이터베이스에 적용했지만 버전 4.2부터 Berkeley DB는 로그 파일이 해당 위치에 그대로 있는 것으로 기대합니다.
새 복구 디렉토리에 있는 데이터베이스 파일에 대해 db_verify를 실행합니다.
핫 백업을 복원하려면 절차에 나와 있는 단계는 db_verify를 실행하는 방법을 설명합니다.
새 복구 디렉토리에 대해 csdb -v list를 실행합니다.
새 복구 디렉토리가 앞의 세 복구 단계를 모두 통과한 경우 손상된 이전 활성 데이터베이스를 새 복구 데이터베이스로 대체합니다.
새 스냅샷 역할을 하도록 새 라이브 데이터베이스를 핫 백업 디렉토리에 복사합니다.
Calendar Server를 시작합니다.
새 복구 디렉토리에서 단계가 실패할 경우 다음과 같은 방법으로 손상되지 않은 이전 아카이브 백업을 식별합니다.
아카이브 백업 복사본 역방향 작업을 통해 각각에 대해 세 복구 프로그램db_recover -c-h, db_verify 및 csdb -v list를 차례로 실행하여 손상되지 않은 최신 복사본을 찾습니다.
통과한 첫 번째 아카이브 복사본을 라이브 데이터베이스 디렉토리에 복원할 수 있습니다.
아카이브 백업을 복원하려면에 표시된 것처럼 손상된 라이브 데이터베이스를 손상 없는 아카이브 백업으로 대체합니다.
아카이브 백업이 수행되지 않으면 기술 지원부에 문의하십시오.