ホームページ  >  記事  >  データベース  >  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): REDO ログをチェックしないと、InnoDB ストレージ エンジンはコミットされていないトランザクションをコミットされたものとして扱います。

  6. (SRV_FORCE_NO_LOG_REDO): ロールフォワード操作を実行しません。 F

    innodb_Force_recovery = 6
  7. innodb_purge_thread = 0


この時点で my.cnf で 挿入、更新、削除
操作を再起動します
論理エクスポートを実行します。 y=0 、innodb_purge_threads=1

、データベースを再構築し、最後にエクスポートされたデータを再インポートします

この記事では、mysql innodb の起動に失敗し、再起動できない処理方法について説明します。 phpの中国語サイト。

関連する推奨事項: PHP が指定された日付を取得する方法を説明する

PHP が一意の RequestID クラスを生成する方法の詳細な説明

MySQL を介してデータベース テーブルの容量を確認する方法

以上がmysql innodbの起動に失敗し再起動できない問題の対処方法を解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。