>  기사  >  데이터 베이스  >  mysql 시작 후 바로 종료되는 문제(ibdata1 파일 손상으로 인해 발생) 해결 방법을 자세히 소개합니다.

mysql 시작 후 바로 종료되는 문제(ibdata1 파일 손상으로 인해 발생) 해결 방법을 자세히 소개합니다.

黄舟
黄舟원래의
2017-03-27 13:18:032089검색

아래 편집기는 시작 직후 mysql에 대한 완벽한 솔루션을 제공합니다. (ibdata1 파일 손상으로 인해) 편집자가 꽤 좋다고 생각해서 지금 공유하고 참고하겠습니다.

Mysql에 있는 서버에 있습니다. 잠시 실행했는데 갑자기 아주 이상한 현상이 발생했습니다: 다시 시작한 후 복원할 수 없습니다! 정확한 상황은: MySQL을 시작하자마자 종료됩니다. 🎜>다음과 같이 mysql 오류 로그를 봅니다. >

160920 22:41:41 mysqld_safe Starting mysqld daemon with databases from /home/MysqlData/
2016-09-20 22:41:41 0 [Note] /Data/app/mysql5.6.25/bin/mysqld (mysqld 5.6.25-log) starting as process 32372 ...
2016-09-20 22:41:42 32372 [Note] 
Plugin 'FEDERATED' is disabled.
2016-09-20 22:41:42 32372 
[Warning] option 'innodb-write-io-threads': unsigned value 1000 adjusted to 64
2016-09-20 22:41:42 32372
 [Warning] option 'innodb-read-io-threads': unsigned value 1000 adjusted to 64
2016-09-20 22:41:42 32372 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-09-20 22:41:42 32372 [Note] InnoDB: The InnoDB memory heap is disabled
2016-09-20 22:41:42 32372 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-09-20 22:41:42 32372 [Note] InnoDB: Memory barrier is not used
2016-09-20 22:41:42 32372 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-09-20 22:41:42 32372 [Note] InnoDB: Using CPU crc32 instructions
2016-09-20 22:41:42 32372 [Note] InnoDB: Initializing buffer pool, size = 1.0G
2016-09-20 22:41:42 32372 [Note] InnoDB: Completed initialization of buffer pool
2016-09-20 22:41:42 32372 [Note] InnoDB: Highest supported file format is Barracuda.
2016-09-20 22:41:42 32372 [Note] InnoDB: Log scan progressed past the checkpoint lsn 20293587957
2016-09-20 22:41:42 32372 [Note] InnoDB: 
Database was not shutdown normally!
2016-09-20 22:41:42 32372 [Note] InnoDB: Starting crash recovery.
2016-09-20 22:41:42 32372 [Note] InnoDB: Reading tablespace information from the .ibd files...
2016-09-20 22:41:42 32372 [Note] InnoDB: Restoring possible half-written data pages 
2016-09-20 22:41:42 32372 [Note] InnoDB: from the doublewrite buffer...

InnoDB: 복구 중: 로그 시퀀스 번호 20293596130까지 스캔

2016-09-20 22:41:42 32372 [Note] InnoDB: Starting an apply batch of log rec
ord
s to the database...
InnoDB: Progress in percent: 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 
90 91 92 93 94 95 96 97 98 99 
InnoDB: Apply batch completed
InnoDB: Last MySQL binlog file 
position
 0 136254, file name mysql-bin.00
001
3
2016-09-20 22:41:43 32372 [Note] InnoDB: 128 rollback segment(s) are active.
2016-09-20 22:41:43 32372 [Note] InnoDB: Waiting for purge to start
2016-09-20 22:41:43 7f77a9edd700 InnoDB: Assertion failure in thread 140151928772352 in file trx0purge.cc line 699

InnoDB: 어설션 실패: purge_sys-> ;iter.trx_no aed35fad5efef22ef3ddda2955186ec0rseg->last_trx_no

InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
02:41:43 UTC - mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed, 
something is definitely wrong and this may fail.

로그를 분석한 결과 데이터베이스를 다시 시작할 수 없는 것으로 나타났습니다. ibdata1 파일이 손상되어 재시작 후 정상적으로 복원이 되지 않는다는 것입니다.

해결책:


복구 단계를 건너뛰고
my.cnf 파일을 수정한 후 my.cnf에 [mysqld]를 추가해야 합니다.

innodb_force_recovery = 6
innodb_purge_threads = 1


설명:

innodb_force_recovery를 1로 설정할 수 있습니다. -6, 큰 숫자에는 이전 숫자의 영향이 모두 포함됩니다.
특정 숫자에 해당하는 의미:


1--- - -(SRVFORCEIGNORECORRUPT): 감지된 손상된 페이지를 무시합니다.

2----(SRVFORCENORECORRUPT): 메인 스레드가 전체 제거 작업을 수행해야 하는 경우 충돌이 발생합니다. ---(SRVFORCENOTRXUNDO): 트랜잭션 롤백 작업을 수행하지 않습니다. 4----(SRVFORCENOIBUFMERGE): 삽입 버퍼의 병합 작업을 수행하지 않습니다. Redo 로그를 보면 InnoDB 스토리지 엔진은 커밋되지 않은 트랜잭션을 다음과 같이 처리합니다. 헌신적인. 6------(SRVFORCENOLOG_REDO): 롤포워드 작업을 수행하지 않습니다.
mysql을 다시 시작하면 괜찮습니다~

그래도 시작할 수 없다면 데이터 디렉터리 datafile에서 ibdata1, ib_logfile* 등의 파일을 삭제해야 합니다.


시작 후 MySQL 데이터베이스를 내보내고 다시 복원하세요.

위 내용은 mysql 시작 후 바로 종료되는 문제(ibdata1 파일 손상으로 인해 발생) 해결 방법을 자세히 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.