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

推薦する

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

Ubuntu 18でターミナルを美しいコマンドラインプロンプトに変更する方法

VMware と Ubuntu を再インストールしましたが、コマンドラインプロンプトが単調すぎて美し...

Vue/React シングルページ アプリケーションをリフレッシュなしで復元するソリューション

目次導入なぜわざわざ?落とし穴のあるコミュニティソリューション(Vue を例に挙げる)現時点では良い...

Ubuntuがインターネットに接続できない場合の解決策

問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...

MySQL 8.0 でのチェック制約の実装

みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。今回はMySQL 8.0で追...

Vueは移動可能なフローティングボタンを実装します

この記事の例では、どこにでも移動できるフローティングボタンを実現するためのVueの具体的なコードを共...

MySQLでストアドプロシージャをデバッグする最も簡単な方法

同僚から、一時テーブルを使用して変数データを挿入して表示する方法を教わったことがありますが、この方法...

mysql5.7.18 のインストール時にエントリが見つからない問題の解決方法

mysql5.7.18のインストール時に次の問題が発生しました: プログラム入力ポイントfesetr...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

ウェブデザインにおけるポップアップウィンドウとフローティングレイヤーのデザイン

従来のソフトウェアから Web ウェアへの段階的な移行の傾向の中で、デザイン パターンとテクノロジは...

Ubuntuが仮想マシンでインターネットに接続できない問題の解決策

インターネットに接続できない仮想マシンをセットアップするのは非常に面倒です。ここでは、Ubuntu ...

CSSはコンテンツの高さが足りない場合にフッターを自動的に下部に固定します

UI カットのプロセスでは、ページはヘッダー、コンテンツ、フッターの 3 つの部分で構成されることが...

Dockerイメージを素早くデプロイして実行する最新のIDEAプロセスの詳細な説明

背景docker とアイデアを使用して、Java Web の開発、展開、運用までのプロセス全体を実現...

Vueは秒殺しのカウントダウンコンポーネントを実装する

この記事では、2番目のキルカウントダウンコンポーネントを実装するためのVueの具体的なコードを参考ま...

MySQL GROUP_CONCAT 制限の解決

効果: GROUP_CONCAT関数は、フィールド値を文字列に連結することができます。デフォルトの区...