MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

MySQL が起動直後にシャットダウンする問題 (ibdata1 ファイルの破損が原因) に対する完璧な解決策

コンピュータ ルームのサーバー上の mysql がしばらく実行されていたのですが、突然、再起動しても回復できないという非常に奇妙な現象が発生しました。正確な状況は、mysql を起動した後、すぐに再び閉じられることです。

次のようにして、mysql エラー ログを確認します。

160920 22:41:41 mysqld_safe /home/MysqlData/ のデータベースを使用して mysqld デーモンを起動しています
2016-09-20 22:41:41 0 [注記] /Data/app/mysql5.6.25/bin/mysqld (mysqld 5.6.25-log) がプロセス 32372 として開始されました...
2016-09-20 22:41:42 32372 [注意]プラグイン「FEDERATED」は無効になっています。
2016-09-20 22:41:42 32372 [警告] オプション 'innodb-write-io-threads': 符号なし値 1000 が 64 に調整されました
2016-09-20 22:41:42 32372 [警告] オプション 'innodb-read-io-threads': 符号なし値 1000 が 64 に調整されました
2016-09-20 22:41:42 32372 [注記] InnoDB: アトミックを使用してバッファプールページを参照カウントする
2016-09-20 22:41:42 32372 [注意] InnoDB: InnoDB メモリヒープが無効になっています
2016-09-20 22:41:42 32372 [注記] InnoDB: ミューテックスと rw_locks は GCC アトミック組み込み関数を使用します
2016-09-20 22:41:42 32372 [注意] InnoDB: メモリバリアは使用されません
2016-09-20 22:41:42 32372 [注記] InnoDB: 圧縮テーブルは zlib 1.2.3 を使用します
2016-09-20 22:41:42 32372 [注記] InnoDB: CPU crc32 命令の使用
2016-09-20 22:41:42 32372 [注記] InnoDB: バッファプールを初期化しています。サイズ = 1.0G
2016-09-20 22:41:42 32372 [注記] InnoDB: バッファプールの初期化が完了しました
2016-09-20 22:41:42 32372 [注記] InnoDB: サポートされている最高のファイル形式は Barracuda です。
2016-09-20 22:41:42 32372 [注記] InnoDB: ログスキャンがチェックポイント lsn 20293587957 を超えて進行しました
2016-09-20 22:41:42 32372 [注意] InnoDB:データベースが正常にシャットダウンされませんでした。
2016-09-20 22:41:42 32372 [注記] InnoDB: クラッシュリカバリを開始しています。
2016-09-20 22:41:42 32372 [注記] InnoDB: .ibd ファイルからテーブルスペース情報を読み取っています...
2016-09-20 22:41:42 32372 [注記] InnoDB: 半分書き込まれた可能性のあるデータページの復元
2016-09-20 22:41:42 32372 [注記] InnoDB: ダブルライト バッファから...
InnoDB: リカバリを実行しています: ログ シーケンス番号 20293596130 までスキャンしました
2016-09-20 22:41:42 32372 [注記] InnoDB: データベースへのログ レコードの適用バッチを開始しています...
InnoDB: 進捗状況(パーセント): 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: バッチ適用が完了しました
InnoDB: 最後の MySQL バイナリログ ファイルの位置 0 136254、ファイル名 mysql-bin.000013
2016-09-20 22:41:43 32372 [注記] InnoDB: 128 個のロールバック セグメントがアクティブです。
2016-09-20 22:41:43 32372 [メモ] InnoDB: パージの開始を待機しています
2016-09-20 22:41:43 7f77a9edd700 InnoDB: スレッド 140151928772352、ファイル trx0purge.cc の行 699 でアサーション エラーが発生しています
InnoDB: アサーションに失敗しました: purge_sys->iter.trx_no <= purge_sys->rseg->last_trx_no
InnoDB: 意図的にメモリトラップを生成します。
InnoDB: 詳細なバグレポートを http://bugs.mysql.com に送信してください。
InnoDB: アサーションの失敗やクラッシュが繰り返し発生する場合、
InnoDB: mysqldの起動直後に、
InnoDB: InnoDBテーブルスペースが破損しています。
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: 強制リカバリについて。
02:41:43 UTC - mysqld はシグナル 6 を取得しました。
これはバグに遭遇したためかもしれません。また、このバイナリが
または、リンクされているライブラリの1つが破損しているか、不適切に構築されているか、
または構成が誤っています。このエラーは、ハードウェアの故障によっても発生する可能性があります。
役立つ情報を集めるために全力を尽くします
問題を診断するが、すでにクラッシュしているので、
何かが間違いなく間違っており、失敗する可能性があります。

ログを分析した結果、ibdata1 ファイルが破損しており、再起動後に正常に復元できなかったため、データベースを再起動できなかったことが判明しました。

解決:

リカバリ手順をスキップし、my.cnf ファイルを変更して、my.cnf の [mysqld] に以下を追加する必要があります

innodb_force_recovery = 6
innodb_purge_threads = 1

説明する:

innodb_force_recovery は 1 ~ 6 に設定でき、数値が大きいほど、それ以前のすべての数値の効果が含まれます。

特定の数字の意味:

1-----(SRVFORCEIGNORECORRUPT): 検出された破損ページを無視します。
2-----(SRVFORCENOBACKGROUND): メイン スレッドの実行を防止します。メイン スレッドが完全なパージ操作を実行する必要がある場合、クラッシュが発生します。
3-----(SRVFORCENOTRXUNDO): トランザクションのロールバックは実行されません。
4-----(SRVFORCENOIBUFMERGE): 挿入バッファに対してマージ操作を実行しません。
5-----(SRVFORCENOUNDOLOGSCAN): REDO ログをチェックしないと、InnoDB ストレージ エンジンはコミットされていないトランザクションをコミット済みとして扱います。
6-----(SRVFORCENOLOG_REDO): ロールフォワード操作を実行しません。

もう一度mysqlを起動すれば大丈夫ですよ〜

それでも起動できない場合は、データ ディレクトリのデータファイル内の ibdata1、ib_logfile* などのファイルを削除する必要があります。

起動後、MySQL データベースをエクスポートして復元します。

上記の記事は、MySQL が起動直後に終了する問題 (ibdata1 ファイルの破損が原因) を完璧に解決するものであり、これが編集者が皆さんと共有する内容のすべてです。皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • mysql-8.0.15-winx64はインストールにzipパッケージを使用し、起動後すぐにサービスがシャットダウンされます。
  • MySQL はパスワード強度の検証をオフにします
  • MySQL 子テーブルで外部キー制約チェックを無効にする方法
  • PHP で mysqli オブジェクト指向メソッドを使用して MySQL データベースを開いたり閉じたりする方法
  • MySQL サービスを安全にシャットダウンするチュートリアル
  • lnmp でディスク領域を保護するために MySQL ログをオフにする方法
  • Windows でバッチ処理を使用して MySQL を起動およびシャットダウンする
  • MySQLデータベースの関数を開く、閉じる、表示する方法
  • MySQL のシャットダウンプロセスと安全に MySQL をシャットダウンする方法の詳細な説明
  • Mysql カーソルの定義、使用、終了に関する詳細な分析
  • MySQLサーバーの起動とシャットダウン
  • MySQLインスタンスを安全にシャットダウンする方法

<<:  Nginx ロケーションマッチングルールの例

>>:  vue-simple-uploader をベースに、ファイルセグメントアップロード、インスタントアップロード、ブレークポイント再開のグローバルアップロードプラグイン機能をカプセル化します。

推薦する

発生したブラウザの互換性の問題と解決策(推奨)について

序文:先週の日曜日、先輩から3ページ作るのを手伝って欲しいと頼まれました。データのやり取りなどはなく...

Win10+Ubuntu 20.04 LTS デュアル システム インストール (UEFI + GPT) (画像とテキスト、複数の画像には注意)

Win10 のインストール (すでにインストールされている場合はスキップしてください) win10...

テーブルを動的に読み込み、削除する JavaScript

この記事では、テーブルを動的に読み込み、削除するためのJavaScriptの具体的なコードを参考まで...

HTML の色に関する参考資料

HTML では、色は 2 つの方法で表現されます。 1 つは、青の場合は blue のように色の名前...

Hadoop 2.Xの新機能、ごみ箱機能の説明

ごみ箱機能をオンにすると、削除されたファイルの元のデータをタイムアウトなしで復元できるため、誤って削...

MySQL データベースの鉄則 (要約)

適切なデータベース仕様は、ソフトウェア実装の複雑さを軽減し、通信コストを削減するのに役立ちます。この...

ウェブレッスンプラン、初心者向けレッスンプラン

指導トピックウェブページ適用グレード高校2年生授業時間1 クラス教科書分析焦点: 静的および動的ウェ...

ページのレンダリング時間を短縮してページの実行速度を速めます

ブラウザでのページのレンダリング時間をできるだけ短縮するにはどうすればよいでしょうか? この記事は、...

ピクセルを包括的なブランド体験に変えるヒント

編集者:この記事では、インタラクティブデザインがブランドコミュニケーションチェーン全体で果たすべき役...

Linux lseek関数の使い方の詳しい説明

注:記事に誤りがある場合は、メッセージを残して指摘してください。ご協力ありがとうございます。名前名前...

Node.js の fs モジュールと Path モジュールのメソッドの詳細な説明

概要:ファイルシステム モジュールは、標準の POSIX ファイル I/O 操作セットをラップしたシ...

dockerでsshd操作を有効にする

まず、docker に openssh-server をインストールします。インストールが完了したら...

Vueはドラッグアンドドロップまたはクリックで写真をアップロードする機能を実装しています

この記事では、ドラッグアンドドロップやクリックによる画像のアップロードを実現するためのVueの具体的...

Linuxのsortコマンドの複数のパラメータを理解するための1つの質問

sort コマンドは非常によく使用されますが、-o、-n、-u、-r などの多くのパラメーターがあり...

インタラクティブな視覚化 JS ライブラリ gojs の使い方の紹介とヒント

目次1. gojsの紹介2. Gojsのアプリケーションシナリオ3. gojs を選ぶ理由: 4. ...