이 데이터를 다른 곳에서 가져오는 문제를 피하려면 먼저 현재 라이브러리의 데이터베이스 파일(/var/lib/mysql/location)을 백업하세요. . 다음으로 Percona 서버 5.7 패키지를 제거하고 원래 5.1.71 패키지를 다시 설치한 후 mysql 서비스를 시작했습니다. Unknown/unsupported table type: innodb 메시지가 표시되고 정상적으로 시작할 수 없습니다.
110509 12:04:27 InnoDB: Initializing buffer pool, size = 384.0M 110509 12:04:27 InnoDB: Completed initialization of buffer pool InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes InnoDB: than specified in the .cnf file 0 157286400 bytes! 110509 12:04:27 [ERROR] Plugin 'InnoDB' init function returned error. 110509 12:04:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 110509 12:04:27 [ERROR] Unknown/unsupported table type: innodb 110509 12:04:27 [ERROR] Aborting 110509 12:04:27 [Note] /usr/sbin/mysqld: Shutdown complete
/var/lib/mysql/ 디렉터리를 삭제하고 데이터베이스 서비스를 다시 시작한 후 초기화하면 정상적으로 표시됩니다. innodb 엔진을 찾을 수 있습니다. 그런 다음 데이터베이스를 중지하고 이전에 백업한 /var/lib/mysql/ 디렉터리의 내용을 현재 위치의 내용으로 덮어쓴 후 다시 시작합니다. 또한 시작할 수 없고 오류 내용도 이전과 동일하다는 것을 확인했습니다.
/var/lib/mysql 디렉토리의 내용 구조는 다음과 같습니다.
-rw-rw---- 1 mysql mysql 10485760 2月 26 18:10 ibdata1 -rw-rw---- 1 mysql mysql 5242880 2月 26 18:10 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 2月 26 17:20 ib_logfile1 drwx------ 2 mysql mysql 4096 2月 26 17:20 mysql drwx------ 2 mysql mysql 4096 2月 26 17:24 wiki
wiki 디렉토리는 테스트 데이터용 라이브러리, ibdata1 파일은 데이터 파일, ib로 시작하는 두 파일은 로그 파일입니다. , 그리고 mysql 디렉토리에는 시스템 라이브러리와 관련된 것들이 포함되어 있습니다. 초기화된 데이터를 다시 사용하고, wiki 디렉토리와 ibdata1 파일을 /var/lib/mysql 디렉토리에 덮어쓰면 정상적으로 시작하고 로그인할 수 있습니다.
그러나 mysqldump를 통해 백업할 때 알 수 없는 테이블 엔진 "Innodb"가 표시됩니다. 로그인 후 현재 엔진 유형을 모두 확인하고 그중 innodb 유형이 존재하지 않는지 확인합니다.
alter 명령을 사용하여 테이블 중 하나의 유형을 MyISAM으로 수정하고 오류가 있는지 확인합니다. 아직도 보고되고 있습니다.
find를 사용하여 /usr/lib64/mysql/plugin/ 디렉터리에서 ha_innodb_plugin.so 파일을 찾으세요. mysql5의 최신 버전이 온라인 플러그인 설치를 지원한다는 인상을 받았습니다. 실제로 지원되는지 확인하려면 다음을 확인하십시오.
다음 명령을 사용하여 로드할 때 실패한 것으로 나타났습니다.
install plugin innodb soname 'ha_innodb.so';
/etc/my.cnf에 다음 구성을 추가합니다. :
plugin-load=innodb=ha_innodb_plugin.so plugin_dir=/usr/lib64/mysql/plugin/ default-storage-engine=InnoDB
아직 시동이 실패한 것으로 확인되었습니다. mysql-error.log를 확인하고 다음 내용을 찾으세요.
InnoDB: Database page corruption on disk or a failed InnoDB: file read of page 7. InnoDB: You may have to recover from a backup. InnoDB: It is also possible that your operating InnoDB: system has corrupted its own file cache InnoDB: and rebooting your computer removes the InnoDB: error. InnoDB: If the corrupt page is an index page InnoDB: you can also try to fix the corruption InnoDB: by dumping, dropping, and reimporting InnoDB: the corrupt table. You can use CHECK InnoDB: TABLE to scan your table for corruption. InnoDB: See also http://dev.mysql.com/doc/refman/5.1/en/forcing-innodb-recovery.html
공식 forcing-innodb-recovery 페이지를 열고 innodb_force_recovery 매개변수를 지정하여 강제로 시작 및 복구할 수 있는지 확인하세요. /etc/my.cnf에 다음 콘텐츠를 추가합니다.
innodb_force_recovery=6
다시 시작하는 데 성공했습니다. mysqldump를 통한 백업에는 문제가 없으며, 다른 호스트로 백업 데이터를 가져오는 것도 정상으로 확인 가능합니다.
이제 쉽습니다. mysql을 완전히 삭제하고 Percona 서버 5.7을 다시 설치한 후 데이터베이스를 구축하고 데이터를 복원하고 프로그램을 다시 연결하면 모든 것이 정상입니다.
위 내용은 mysql innodb 예외를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!