>  기사  >  데이터 베이스  >  mysql innodb가 시작되지 않고 다시 시작되지 않는 문제 처리 방법에 대한 설명

mysql innodb가 시작되지 않고 다시 시작되지 않는 문제 처리 방법에 대한 설명

jacklove
jacklove원래의
2018-06-09 09:25:142277검색

사용 중 컴퓨터가 다운되었습니다. 재시작 후 mysql이 성공적으로 시작되지 않는 것을 발견했습니다. 오류 로그를 살펴보니 mysql이 시작되지 못하게 하는 문제가 innodb에 있음을 발견했습니다.

오류 로그

$ mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/fdipzonedeMacBook-Air.local.pid).22:08:37 mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql2016-04-23 22:08:38 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2016-04-23 22:08:38 0 [Note] /usr/local/Cellar/mysql/5.6.24/bin/mysqld (mysqld 5.6.24) starting as process 3604 ...2016-04-23 22:08:38 3604 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive2016-04-23 22:08:38 3604 [Note] Plugin 'FEDERATED' is disabled.2016-04-23 22:08:38 3604 [Note] InnoDB: Using atomics to ref count buffer pool pages2016-04-23 22:08:38 3604 [Note] InnoDB: The InnoDB memory heap is disabled2016-04-23 22:08:38 3604 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins2016-04-23 22:08:38 3604 [Note] InnoDB: Memory barrier is not used2016-04-23 22:08:38 3604 [Note] InnoDB: Compressed tables use zlib 1.2.32016-04-23 22:08:38 3604 [Note] InnoDB: Using CPU crc32 instructions2016-04-23 22:08:38 3604 [Note] InnoDB: Initializing buffer pool, size = 128.0M2016-04-23 22:08:38 3604 [Note] InnoDB: Completed initialization of buffer pool2016-04-23 22:08:38 3604 [Note] InnoDB: Highest supported file format is Barracuda.2016-04-23 22:08:38 3604 [Note] InnoDB: Log scan progressed past the checkpoint lsn 689299334402016-04-23 22:08:38 3604 [Note] InnoDB: Database was not shutdown normally!2016-04-23 22:08:38 3604 [Note] InnoDB: Starting crash recovery.2016-04-23 22:08:38 3604 [Note] InnoDB: Reading tablespace information from the .ibd files...2016-04-23 22:08:38 3604 [ERROR] InnoDB: checksum mismatch in tablespace ./test_user/user_recommend_code#P#pmax.ibd (table test_user/user_recommend_code#P#pmax)2016-04-23 22:08:38 3604 [Note] InnoDB: Page size:1024 Pages to analyze:642016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 1024, Possible space_id count:02016-04-23 22:08:38 3604 [Note] InnoDB: Page size:2048 Pages to analyze:482016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 2048, Possible space_id count:02016-04-23 22:08:38 3604 [Note] InnoDB: Page size:4096 Pages to analyze:242016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 4096, Possible space_id count:02016-04-23 22:08:38 3604 [Note] InnoDB: Page size:8192 Pages to analyze:122016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 8192, Possible space_id count:02016-04-23 22:08:38 3604 [Note] InnoDB: Page size:16384 Pages to analyze:62016-04-23 22:08:38 3604 [Note] InnoDB: VALID: space:2947354 page_no:3 page_size:163842016-04-23 22:08:38 3604 [Note] InnoDB: Page size: 16384, Possible space_id count:12016-04-23 22:08:38 3604 [Note] InnoDB: space_id:2947354, Number of pages matched: 1/1 (16384)2016-04-23 22:08:38 3604 [Note] InnoDB: Chosen space:29473542016-04-23 22:08:38 3604 [Note] InnoDB: Restoring page 0 of tablespace 29473542016-04-23 22:08:38 3604 [Warning] InnoDB: Doublewrite does not have page_no=0 of space: 29473542016-04-23 22:08:38 7fff79b9e300  InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
InnoDB: If you are installing InnoDB, remember that you must create
InnoDB: directories yourself, InnoDB does not create them.
InnoDB: Error: could not open single-table tablespace file ./test_user/user_recommend_code#P#pmax.ibdInnoDB: We do not continue the crash recovery, because the table may become
InnoDB: corrupt if we cannot apply the log records in the InnoDB log to it.
InnoDB: To fix the problem and start mysqld:
InnoDB: 1) If there is a permission problem in the file and mysqld cannot
InnoDB: open the file, you should modify the permissions.
InnoDB: 2) If the table is not needed, or you can restore it from a backup,
InnoDB: then you can remove the .ibd file, and InnoDB will do a normal
InnoDB: crash recovery and ignore that table.
InnoDB: 3) If the file system or the disk is broken, and you cannot remove
InnoDB: the .ibd file, you can set innodb_force_recovery > 0 in my.cnf
InnoDB: and force InnoDB to continue crash recovery here.

해결 방법

1. 데이터가 중요하지 않거나 이미 백업이 있는 경우 mysql 시작을 복원하기만 하면 됩니다.

mysql 디렉토리를 입력하세요. 일반적으로 /usr/local/var/mysql/
ib_logfile* 삭제
ibdata* 삭제
모든 데이터베이스 물리적 디렉터리 삭제(예: 데이터베이스가 test_db인 경우 rm -rf test_db 실행)
mysql 다시 시작
데이터베이스 재구축 또는 백업 범위 사용

2. 백업이 없습니다

사용할 수 있습니다 innodb_force_recovery 매개변수를 사용하면 mysqld가 복구 단계를 건너뛰고 mysqld를 시작한 다음 데이터를 내보내고 데이터베이스를 다시 빌드할 수 있습니다.

innodb_force_recovery는 1~6으로 설정할 수 있으며 큰 숫자에는 이전의 모든 숫자의 영향이 포함됩니다.

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

  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): 롤포워드 작업을 수행하지 않습니다. F 추가

  7. innodb_Force_recovery = 6
innodb_purge_thread = 0


이제 my.cnf(Windows)에서 MySQL
을 다시 시작합니다.

insert, update, delete

작업

완료 후

innodb_force_recovery=를 실행합니다. 0 , innodb_purge_threads=1 그런 다음 데이터베이스를 재구축하고 마지막으로 내보낸 데이터를 다시 가져옵니다이 문서에서는 mysql innodb 시작 실패 및 다시 시작할 수 없음에 대해 설명합니다. 처리 방법에 대한 자세한 내용은 다음을 참조하세요. php 중국어 홈페이지.
관련 권장 사항:

PHP가 지정된 날짜를 얻는 방법 설명

PHP가 고유한 RequestID 클래스를 생성하는 방법에 대한 자세한 설명

MySQL을 통해 데이터베이스 테이블 용량을 확인하는 방법

위 내용은 mysql innodb가 시작되지 않고 다시 시작되지 않는 문제 처리 방법에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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