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

推薦する

VMware ワークステーションの仮想マシンの互換性の問題に対する解決策

VMware ワークステーションの仮想マシンの互換性の問題を解決するにはどうすればよいですか?ノート...

CSSの幅と高さのデフォルト値の詳細な説明:autoと%

結論は幅の%: 包含ブロック(親要素)の幅に基づいて、親の制限を超える幅のパーセンテージを定義します...

初心者向けMySQLインデックス

序文MySQL インデックスで最も重要なデータ構造は B+ ツリーなので、まずは B+ ツリーの原理...

Linux でファイルのユーザーとグループを変更する方法

Linux では、ファイルが作成されると、そのファイルの所有者はファイルを作成したユーザーになります...

Vue2.x プロジェクトのパフォーマンス最適化のためのコード最適化の実装

目次1 v-ifとv-showの使用2. 計算と監視を区別する3 v-for トラバーサルでは、アイ...

DockerはElasticsearch7.6クラスタをインストールし、パスワードを設定します

Elasticsearch 6.8 以降、無料ユーザーは X-Pack のセキュリティ機能を使用でき...

Linux 上の MySQL 5.7 でパスワードを忘れる問題を解決する

1. 問題Linux 上の mysql5.7 のパスワードを忘れました2. 解決策• ステップ 1:...

Vue でログインと登録テンプレートを実装するためのサンプルコード

テンプレート 1: ログイン.vue <テンプレート> <p class=&quo...

Vueでデータ例を定義する方法

序文開発プロセスにおいて、変数の定義は非常に頻繁かつ基本的なタスクです。変数の使用シナリオと範囲に応...

MySQL 8.0.20 のインストールと設定方法のグラフィックチュートリアル

MySQLのダウンロードとインストール(バージョン8.0.20)のチュートリアルは参考までに、具体的...

モバイル端末の水平および垂直画面ビューポート検出を決定するための js のいくつかの方法

目次1. 異なるビューポートを取得する方法2. 水平画面と垂直画面のJavaScript検出3. 水...

MySQL の非主キー自己増分使用例の分析

この記事では、例を使用して、MySQL の非主キーの自己増分の使用方法を説明します。ご参考までに、詳...

Vueリストデータを削除した後、ページを自動的に更新する方法と更新方法の詳細な説明

問題の説明:フロントエンドがデータの一部を削除したり、新しいデータを追加したりすると、バックエンドの...

W3Cチュートリアル(16):その他のW3Cの活動

このセクションでは、その他の重要かつ興味深い W3C アクティビティの概要を説明します。このセクショ...

DELL R730 サーバーの構成 RAID とインストール サーバー システムとドメイン制御の詳細なグラフィック チュートリアル

最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...