• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. InnoDB INFORMATION_SCHEMA 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    19. InnoDB 문제 해결
    1. InnoDB의 I/O 문제 해결
    2. InnoDB 복구 강제 실행
    3. InnoDB 데이터 사전 작업 문제 해결
    4. InnoDB 오류 처리
    5. InnoDB 오류 코드
    6. 운영 체제 오류 코드
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

14.19.2 InnoDB 복구 강제 실행

데이터베이스 페이지의 손상을 조사하기 위해 SELECT ... INTO OUTFILE 을 사용하여 데이터베이스에서 테이블을 덤프 할 수 있습니다. 일반적으로이 방법으로 취득 된 데이터의 대부분이 완전한 상태에 있습니다. 심각한 손상은 SELECT * FROM tbl_name 명령문 또는 InnoDB 의 백그라운드 작업이 충돌하거나 표명하고, 경우에 따라서는 InnoDB 의 롤 포워드 복구가 충돌 할 수 있습니다. 이런 경우 테이블을 덤프 할 수 있도록 innodb_force_recovery 옵션을 사용하여 백그라운드 작업을 수행하지 않도록하고 InnoDB 스토리지 엔진을 강제로 실행시킬 수 있습니다. 예를 들어, 서버를 다시 시작하기 전에 옵션 파일의 [mysqld] 섹션에 다음 줄을 추가 할 수 있습니다.

 [mysqld]
 innodb_force_recovery = 1
경고

innodb_force_recovery 를 0보다 큰 값으로 설정하는 것은 긴급 상황에서 InnoDB 를 시작하고 테이블을 덤프 할 수있는 경우에만하십시오. 그것을하기 전에 데이터베이스를 다시 작성해야하는 경우에 대비하여 데이터베이스의 백업 복사본이 있는지 확인하십시오. 4 이상의 값을 지정하면 데이터 파일이 영구적으로 손상 될 수 있습니다. 프로덕션 서버 인스턴스에서 4 이상의 innodb_force_recovery 설정을 사용하는 것은 사용하는 데이터베이스의 개별 물리 복사 설정을 성공적으로 테스트 한 후에 만하십시오. InnoDB 의 복구를 강제로 실행하는 경우는 항상 innodb_force_recovery=1 에서 시작해야하는 경우에만이 값을 1 씩 늘리도록하십시오.

innodb_force_recovery 은 기본적으로 0입니다 (복구가 강제로 실행되지 않는 일반 부팅). innodb_force_recovery 의 허용되는 0 이외의 값은 1에서 6까지입니다. 큰 값은 작은 값의 기능이 포함되어 있습니다. 예를 들어, 3의 값은 값 1과 2의 모든 기능이 포함되어 있습니다.

3 다음 innodb_force_recovery 값을 사용하여 테이블을 덤프 할 경우 손상된 개별 페이지에서 일부 데이터 만 손실되지 않기 때문에 비교적 안전합니다. 4 이상의 값은 데이터 파일이 영구적으로 손상 될 수 있기 때문에 위험하다고 간주됩니다. 6 값은 데이터베이스 페이지가 폐지 된 상태로 유지되고 그에 따라 B 트리와 다른 데이터베이스 구조에 더 많은 손상이 도입 될 가능성이 있기 때문에 매우 위험하다고 간주됩니다.

안전 장치 innodb_force_recovery 가 0보다 큰 경우, InnoDB 는 INSERT , UPDATE 또는 DELETE 조작을 방지합니다. MySQL 5.6.15 시점에서는 4 이상 innodb_force_recovery 설정은 InnoDB 를 읽기 전용 모드로합니다.

  • 1 ( SRV_FORCE_IGNORE_CORRUPT )

    손상된 페이지 를 감지 한 경우에도 서버가 동작 할 수 있도록합니다. SELECT * FROM tbl_name 에서 손상된 인덱스 레코드와 페이지 넘기를 시도합니다. 이 테이블의 덤프에 도움이됩니다.

  • 2 ( SRV_FORCE_NO_BACKGROUND )

    마스터 스레드 와 모든 퍼지 스레드 가 실행되지 않도록합니다. 제거 작업 중에 충돌이 발생 뻔 경우이 복구 값에 의해 해결됩니다.

  • 3 ( SRV_FORCE_NO_TRX_UNDO )

    충돌 복구 의 후 트랜잭션 롤백 을 실행하지 않습니다.

  • 4 ( SRV_FORCE_NO_IBUF_MERGE )

    삽입 버퍼 병합 작업을 피할 수 있습니다. 그 조작에 의해 충돌이 발생 뻔 경우는 그것이 해결됩니다. 테이블 통계 를 계산하지 않습니다. 이 값을 지정하면 데이터 파일이 영구적으로 손상 될 수 있습니다. 이 값을 사용한 후 모든 보조 인덱스를 삭제하고 다시 작성하도록 준비하십시오. MySQL 5.6.15 시점에서는 InnoDB 를 읽기 전용으로 설정합니다.

  • 5 ( SRV_FORCE_NO_UNDO_LOG_SCAN )

    데이터베이스를 시작할 때 Undo 로그 를 참조하지 않습니다. InnoDB 는 완료되지 않은 트랜잭션조차 커밋 된 것으로 처리합니다. 이 값을 지정하면 데이터 파일이 영구적으로 손상 될 수 있습니다. MySQL 5.6.15 시점에서는 InnoDB 를 읽기 전용으로 설정합니다.

  • 6 ( SRV_FORCE_NO_LOG_REDO )

    복구에 관련한 Redo 로그 의 롤 포워드하지 않습니다. 이 값을 지정하면 데이터 파일이 영구적으로 손상 될 수 있습니다. 데이터베이스 페이지를 폐지 된 상태로 유지하고이를 통해 B 트리와 다른 데이터베이스 구조에 더 많은 손상이 발생할 수 있습니다. MySQL 5.6.15 시점에서는 InnoDB 를 읽기 전용으로 설정합니다.

테이블에서 SELECT 를 실행하여 테이블을 덤프하고 3 다음 innodb_force_recovery 값을 사용하여 테이블의 DROP 또는 CREATE 를 수행 할 수 있습니다. 롤백시 특정 테이블에서 충돌이 발생하는 것을 알고 있다면, 그 테이블을 삭제할 수 있습니다. 실패한 대량 가져 오기 또는 ALTER TABLE 의해 롤백 폭주가 발생하는 경우는 mysqld 프로세스를 강제 종료하고 innodb_force_recovery 를 3 으로 설정하고 롤백없이 데이터베이스를 시작한 후 롤백 폭주의 원인 이 테이블의 DROP 을 수행 할 수 있습니다.

테이블 데이터의 손상으로 인해 테이블의 전체 내용을 덤프 할 수없는 경우는 ORDER BY primary_key DESC 절이 포함 된 쿼리에서 손상된 부분의 뒤에있는 테이블의 부분을 덤프 할 수 있습니다.

InnoDB 를 시작하기 위해 innodb_force_recovery 를 큰 값으로 할 필요가있는 경우는 복잡한 쿼리 ( WHERE , ORDER BY 또는 기타의 어구를 포함한 쿼리)를 실패시킬 수있는 손상된 데이터 구조가 존재할 가능성 수 있습니다. 이 경우 기본적인 SELECT * FROM t 쿼리 만 실행되지 않을 수 있습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved