MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。

MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。

問題:

MySQL データベースが予期せずクラッシュしたため、データベースを起動できませんでした。

エラーログ:

起動エラー: サービス mysqld の再起動

エラー! MySQL サーバーの PID ファイルが見つかりませんでした。
MySQL を起動しています。エラー! サーバーは PID ファイル (/www/wdlinux/mysql/var/iZ2358oz5deZ.pid) を更新せずに終了しました。

データベース エラー ログ:

200719 22:07:43 InnoDB: データベースは正常にシャットダウンされませんでした。
InnoDB: クラッシュリカバリを開始しています。
InnoDB: .ibd ファイルからテーブルスペース情報を読み取っています...
InnoDB: エラー: 名前 './ob_wp/ob_termmeta.ibd' のテーブルスペース 840 を追加しようとしています
InnoDB: テーブルスペースのメモリキャッシュに、ただしテーブルスペース
InnoDB: 名前 './dev_nss/dg_queue.ibd' の 840 がテーブルスペースにすでに存在します
InnoDB: メモリ キャッシュ!
200719 22:07:43 mysqld_safe mysqld は pid ファイル /www/wdlinux/mysql/var/iZ2358oz5deZ.pid から終了しました

ヒント: データベースの起動時にテーブル スペース情報が読み取られる場合、ob-wp ライブラリ内の ob_users.ibd テーブルのデータ ファイルはテーブル スペースにすでに存在します。

拡大する:

ストレージエンジンはmyisamです。データベースディレクトリには、.frm、.myi、.mydの3種類のファイルがあります。
(a) *.frm - テーブル定義。テーブル構造を記述するファイルです。
(b) *.MYD - 「D」データ情報ファイル。これはテーブルのデータ ファイルです。
(c) *.MYI - 「I」インデックス情報ファイル。テーブル データ ファイル内の任意のインデックスのデータ ツリーです。ストレージ エンジンは InnoDB です。データ ディレクトリには、.frm と .ibd の 2 種類のファイルがあります。
(a) *.frm - テーブル構造を持つファイル。
(b) *.ibd - テーブルデータファイル

出典: https://www.cnblogs.com/liucx/

方法1:

プロンプト情報によると、InnoDBテーブルが破損していると判断されたので、dev_nssライブラリディレクトリ内のテーブル構造とテーブルデータファイルをバックアップしてみてください。
mv ob_termmeta.ibd ob_termmeta.ibd,bak
mv ob_termmeta.frm ob_termmeta.frm.bak
その後、mysql を再起動しましたが、それでも起動できませんでした。他のテーブル データ ファイルがすでに存在するというメッセージが表示されました。破損したファイルを 3 回続けてバックアップしましたが、それでも起動できませんでした。したがって、この方法は放棄されます。

方法2:

1. 公式ウェブサイトのドキュメントを参照し、MySQL設定ファイル/etc/my.cnfに設定を追加して正常に起動します。
[mysqld]
innodb_force_recovery = 1

2. データベースをバックアップする
mysqldump -h172.168.2.100 -uroot -p -A > mysql_all_bak.sql
レポートが存在しない場合は、mysqldumpはパラメータ--forceを追加してエラーをスキップすることができます。

3. データベースを削除する
drop database hxdb; または mv hxdb hxdb_bak (安全のため)

4. パラメータinnodb_force_recoveryを削除します。
以前に設定したパラメータを削除した後、データベースを再起動します。

5. データのインポート
mysql -uroot -p < mysql_all_bak.sql
警告: コマンド ライン インターフェイスでパスワードを使用すると安全でない可能性があります。
エラー 1050 (42S01) 25 行目: テーブル '`hxdb`.`tb_info`' は既に存在します

テーブルがすでに存在するというメッセージが表示される場合は、innodb_force_recovery パラメータを削除した後、データベースがロールバックして対応する ibd ファイルを生成するため、ファイルを削除して再インポートする必要があります。
mysql -uroot -p < mysql_all_bak.sql

注記:

innodb_force_recovery パラメータの説明: クラッシュ リカバリ モード。通常は、深刻なトラブルシューティング状況でのみ変更されます。可能な値は0から6までです。

緊急の場合にのみこの変数を 0 より大きい値に設定し、InnoDB を起動してテーブルをダンプできるようにします。安全対策として、InnoDB は innodb_force_recovery が 0 より大きい場合、挿入、更新、または削除操作を防止します。
5.6.15 では、InnoDB を読み取り専用モードにするために、innodb_force_recovery が 4 以上に設定されています。 relay_log_info_repository=TABLE および master_info_repository=TABLE は InnoDB テーブルに情報を保存するため、これらの制限によりレプリケーション管理コマンドがエラーで失敗する可能性があります。

innodb_force_recovery はデフォルトで 0 です (強制リカバリなしの通常の起動)。 innodb_force_recovery に許可されるゼロ以外の値は 1 から 6 です。値が大きいほど、小さい値の機能が含まれます。たとえば、値 3 には値 1 と 2 のすべての機能が含まれます。
innodb_force_recovery 値が 3 以下でテーブルをダンプできる場合は、破損した単一ページのデータの一部のみが失われるという比較的安全な状況になります。 4 以上の値は、データ ファイルが永久に破損する可能性があるため危険であると見なされます。値 6 は、データベース ページが古い状態のままになり、B ツリーやその他のデータベース構造がさらに破損する可能性があるため、過剰であると考えられます。

安全上の理由から、innodb_force_recovery が 0 より大きい場合、InnoDB は INSERT、UPDATE、または DELETE 操作を防止します。 MySQL 5.6.15 以降では、innodb_force_recovery を 4 以上に設定すると、InnoDB は読み取り専用モードになります。
1 (SRV_FORCE_IGNORE_CORRUPT)
破損したページが検出された場合でもサーバーを実行させます。 SELECT * FROM tbl_name で破損したインデックス レコードとページをスキップするようにしてみてください。これにより、テーブルをダンプしやすくなります。
2 (SRV_FORCE_NO_BACKGROUND)
メイン スレッドとクリーンアップ スレッドの実行をブロックします。クリーンアップ操作中にクラッシュが発生した場合、この回復値によってクラッシュが防止されます。
3 (SRV_FORCE_NO_TRX_UNDO)
クラッシュ回復後にトランザクション ロールバックを実行しないでください。
4 (SRV_FORCE_NO_IBUF_MERGE)
挿入バッファのマージ操作を防止します。クラッシュを引き起こす場合は、実行しないでください。表の統計は計算されません。この値により、データ ファイルが永久に破損する可能性があります。この値を使用した後は、すべてのセカンダリ インデックスを削除して再作成する準備をしてください。 MySQL 5.6.15 では、InnoDB を読み取り専用に設定します。
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
データベースを起動するときには、UNDO ログを参照しないでください。InnoDB は、不完全なトランザクションであってもコミット済みとみなします。この値により、データ ファイルが永久に破損する可能性があります。 MySQL 5.6.15 では、InnoDB を読み取り専用に設定します。
6 (SRV_FORCE_NO_LOG_REDO)
リカバリ時にREDOログのロールフォワードは実行されません。この値により、データ ファイルが永久に破損する可能性があります。データベース ページを古い状態のままにしておくと、B ツリーやその他のデータベース構造にさらに破損が生じる可能性があります。 MySQL 5.6.15 では、InnoDB を読み取り専用に設定します。

出典: https://www.cnblogs.com/liucx/

公式サイトを参照してください:
強制的な innodb リカバリ
https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_force_load_corrupted

これが役に立つことを願います

これで、MySQL データベースが予期せずクラッシュし、テーブル データ ファイルが破損して起動できなくなる問題の解決方法についての記事は終わりです。MySQL データベースが予期せずクラッシュし、テーブル データ ファイルが破損して起動できなくなる問題の関連ソリューションについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLはテーブルデータを復元するためにfrmファイルとibdファイルを使用します
  • MySQL 全体または単一のテーブルデータのエクスポート
  • MySQLでデータを削除してもディスク領域が解放されないのはなぜですか
  • Ubuntu でディスク容量不足により MySQL が起動しない場合の解決策
  • MySQL ストレージ エンジン MyISAM の一般的な問題 (テーブル破損、アクセス不能、ディスク容量不足)
  • lnmp でディスク領域を保護するために MySQL ログをオフにする方法
  • ディスク容量を節約するためにMySQLを縮小するためのいくつかの提案
  • Mysql InnoDB のデータを削除した後にディスク領域を解放する方法
  • MySQL でテーブル データを削除した後もディスク領域がまだ占有されているのはなぜですか?

<<:  Dockerコンテナにnginxを簡単にデプロイするプロセスの分析

>>:  JavaScript コードベースをよりクリーンにする 5 つの方法

推薦する

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

CSS で実装された円形のプログレスバー

成果を達成する 実装コードhtml <div class="wrap"&g...

React-Native環境のセットアップと基本的な紹介

環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...

Docker で PostgreSQL を実行し、いくつかの接続ツールを推奨する

1 はじめに PostgreSQL は、非常に充実した機能を備えたフリーソフトウェアのオブジェクトリ...

ウェブページレイアウトデザインのシンプルな原則

この記事では、Web ページ レイアウト デザインのいくつかの簡単な原則をまとめ、Web ページ デ...

MySQLトリガーの使用例の詳細

MySQL トリガー構文の詳細: トリガーは、特定のテーブル内のデータが挿入、削除、または更新される...

Vueエンジニアがカプセル化しなければならない埋め込み命令の知識のまとめ

目次序文指導の基本フック機能フック関数のパラメータ文章使い方とアイデア成し遂げる汎用性を高める要約す...

CSS に基づいて MaterialUI ボタン​​クリックアニメーションを実装し、それを React コンポーネントにカプセル化します。

序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...

Kubernetes YAMLファイルの使用

目次01 YAMLファイルの概要YAML---キー値型YAML---リスト型02 K8Sにおけるマス...

最新の人気スクリプトAutojsソースコード共有

今日は、最新の人気スクリプト 50 個を含むソース コードを共有します。現在、Mine Guard ...

IE6 スペースバグ修正方法

コードを見てみましょう:コードをコピーコードは次のとおりです。 < !DOCTYPE html...

JS でクリップボード API を使用する方法

目次1. Document.execCommand() メソッド(1)コピー操作(2)貼り付け操作(...

JavaScript strictモードの概要 strictを使用する

目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...

Windows で Graphviz をインストールして開始する方法のチュートリアル

ダウンロードとインストール環境変数の設定インストール環境変数の設定確認基本的な描画の紹介グラフディグ...

Win10 での MySQL 8.0.15 のインストールと設定のグラフィック チュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...