롤백이 ibdata1 내부의 UNDO 테이블 스페이스 를 통해 수행되고 있기 때문에 실제로 할 수있는 일은 없습니다 .
mysqld 프로세스를 종료하고 mysql을 다시 시작하면 응급 복구주기의 일부로 중단 된 부분 만 선택됩니다.
면책 조항 : 데이터 손실에 대한 책임이 없음
수행 할 수있는 작업으로 다른 테이블의 데이터가 손실 될 수 있지만 InnoDB의 정상적인 응급 복구주기를 우회하기 위해 수행 할 수있는 작업이 있습니다.
innodb_force_recovery 라는 시작 옵션이 있으며 이를 통해 다양한 단계의 InnoDB 응급 복구를 우회 할 수 있습니다.
InnoDB 복구 강제 에 대한 MySQL 문서에 따르면 설정 및 효과는 다음과 같습니다.
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)
삽입 버퍼 병합 조작을 방지하십시오. 충돌이 발생하면하지 마십시오. 테이블 통계를 계산하지 마십시오.
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
데이터베이스를 시작할 때 실행 취소 로그를 보지 마십시오. InnoDB는 불완전한 트랜잭션조차 커밋 된 것으로 간주합니다.
6 (SRV_FORCE_NO_LOG_REDO)
복구와 관련하여 리두 로그 롤 포워드를 수행하지 마십시오.
UNDO 및 REDO 로그에 트랜잭션 변경 사항이 저장되면 다음과 같은 위험이 있습니다.
- 기록 될 데이터 손실
- 데이터를 삭제하도록 유지
부작용이 예상되는 경우 전체 / var / lib / mysql을 백업하고 ibdata1, ib_logfile0 및 ib_logfile1을 복사하고 정상적인 복구를 다시 시도하려는 경우를 대비하여 어딘가에 두십시오.
mysql이 모드 중 하나에서 완전히 가동 된 경우
- 위반 테이블을 제외한 모든 데이터를 mysqldump
- MySQL 종료
- / var / lib / mysql / mysql을 제외하고 / var / lib / mysql에서 모든 것을 제거하십시오.
- MySQL을 시작
- mysqldump를 다시로드하십시오.
주의 사항 : 모든 것을 백업하십시오!
이게 도움이 되길 바란다 !!!