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

推薦する

MySQL Shellの紹介とインストール

目次01 レプリ​​カセットアーキテクチャ02 MySQL Shellの紹介とインストール03 My...

nacos が mysql に接続できない場合の解決策

理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...

テキストエリアの disabled 属性と readonly 属性の具体的な使用法

障害者の定義と使用法disabled 属性はブール属性です。 disabled 属性は、テキスト領域...

MySQL ステートメントコメントの紹介

MySQL は次の 3 種類のコメントをサポートしています。 1. 行末の「#」文字から。 2. 「...

Linux CentOS6.5 yum インストール mysql5.6

この記事では、Linux yumを使用してmysql5.6をインストールする簡単な手順を参考までに紹...

MySQL の nvl() 関数に似た ifnull() 関数についての簡単な説明

IFNULL(式1,式2) expr1 が NULL でない場合、IFNULL() は expr1 ...

Docker データ ストレージ ボリュームの詳細な説明

デフォルトでは、コンテナ データの読み取りと書き込みはコンテナのストレージ レイヤーで行われます。コ...

フォーム検証機能を実装するためのネイティブ js

目次開発の際には、機能を段階的に分析して実装することで、明確な考え方を保つことができます。 1. フ...

メタを使用してトラフィックキャッシュをキャンセルし、ページにアクセスするたびにページを更新して簡単にデバッグできるようにします。

コードをコピーコードは次のとおりです。 <!-- ブラウザがローカル キャッシュからページにア...

ソースコードから、Vue2がデータとメソッドを直接取得できる理由がわかる

目次1. 例: これはデータとメソッドを直接取得できます2. 環境を準備し、ソースコードをデバッグし...

MySQL 結合テーブルと ID 自動増分の例の分析

結合の書き方左結合を使用する場合、左側のテーブルが必ず駆動テーブルになりますか? 2 つのテーブルの...

スライド効果を実現するためのネイティブJavaScript

ページ、特にホームページを作成するときは、通常、Web サイト全体の他のメイン ページにリンクできる...

MySQL マスタースレーブレプリケーションでエラーをスキップする方法

1. 従来のbinlogマスタースレーブレプリケーション、エラー報告をスキップする方法 mysql&...

202 無料の高品質 XHTML テンプレート (1)

ここで 123WORDPRESS.COM はこれらのテンプレートの最初の部分を紹介します。各テンプレ...

Vue+thinkphp5.1+axiosでファイルアップロードを実現

この記事では、thinkphp5.1 + Vue+axiosを使用してファイルをアップロードする方法...