専用サーバー Linux Cenos 6 Apache + Nginx
この問題はこれまでに何度か発生しており、サーバーがクラッシュまたはシャットダウンした後に発生しています。
サーバーはpidファイルを更新せずに終了しました
この後、MySQLは起動せず、このエラーが発生し続け、pidファイルを更新せずにサーバーが終了します。
以前は、mysql を再起動する唯一の方法は、ver/lib/mysql から ibdata1 を含むすべてのファイルを削除することでした。その結果、すべてのデータベースをバックアップから再度インポートする必要がありました。
このエラーは、サーバーが一晩中 2 回シャットダウンして再起動した後に、今日再び発生しました。
しかし、今回はetc/my.cnfにこの行を追加した後、MYSQLを起動することができました。
innodb_force_recovery = 4
なぜこの問題が起こり続けるのか、また今後この問題が起きないようにするにはどうしたらよいのか、誰か教えてください。以前、oomkill を有効にすると、サーバー障害やその他の理由でこの問題が起きなくなると読んだことがありますが、それ以来同じ問題が何度も起きています。
error.log は膨大だったので、問題発生前の 8 月 16 日と 18 日の行とエラー発生後の行をコピーしました。また、innodb_force_recovery = 4 が etc/my.cnf に追加された後の行もコピーしました。それ以降、ログ ファイルは更新されていません。
2020-08-16 22:08:34 8142 [警告] InnoDB: テーブルの .frm ファイルは存在しますが、InnoDB の内部データ ディクショナリからテーブル jawi_6jun20/core_cache_option を開くことができません。http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html問題を解決する方法については、2020-08-16 22:08:34 8142 [エラー] 無効な(古い?)テーブルまたはデータベース名 'admin_rule-bkp-5-aug-2020' を参照してください。
2020-08-18 00:30:57 2ab9cb842700 InnoDB: エラー: テーブル "htfr_07aug2020"."customer_address_entity_text" の永続統計の取得が要求されましたが、必要なシステム テーブル mysql.innodb_table_stats および mysql.innodb_index_stats が存在しないか、予期しない構造になっています。代わりに一時統計を使用します。 2020-08-18 00:30:57 8142 [エラー] 無効な (古い?) テーブルまたはデータベース名 'admin_rule-bkp-5-aug-2020'
2020-08-24 00:01:10 2ad344040700 InnoDB: エラー: テーブル "htfr_07aug2020"."quote" の永続統計の取得が要求されましたが、必要なシステム テーブル mysql.innodb_table_stats および mysql.innodb_index_stats が存在しないか、予期しない構造になっています。代わりに一時的な統計を使用します。 2020-08-24 00:01:13 2ad344040700 InnoDB: エラー: テーブル "mysql"."innodb_table_stats" が見つかりません。
020-08-24 14:08:21 13903 [注記] InnoDB: innodb_force_recovery が 4 に設定されました。このテーブルの .ibd ファイルにアクセスできない場合でも、クラッシュ リカバリを続行します。 2020-08-24 14:08:21 13903 [注記] InnoDB: 半分書き込まれた可能性のあるデータ ページを復元しています 2020-08-24 14:08:21 13903 [注記] InnoDB: ダブルライト バッファーから... InnoDB: リカバリを実行しています: ログ シーケンス番号 40054719901 までスキャンしました InnoDB: ロールバックまたはクリーンアップする必要があるトランザクションが 1 件あります InnoDB: 元に戻す行操作は合計 1 件です InnoDB: Trx ID カウンターは 1124333568 です 2020-08-24 14:08:22 13903 [注記] InnoDB: ログ レコードのデータベースへの適用バッチを開始しています... InnoDB: 進行状況 (パーセント): 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 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: バッチの適用が完了しました 2020-08-24 14:08:23 13903 [注記] InnoDB: 128 個のロールバック セグメントがアクティブです。 2020-08-24 14:08:23 13903 [注記] InnoDB: 5.6.47 が開始されました。ログ シーケンス番号 40054719901 2020-08-24 14:08:23 13903 [注記] InnoDB: !!! innodb_force_recovery が 4 に設定されています !!! 2020-08-24 14:08:23 13903 [注記] RSA 秘密鍵ファイルが見つかりません: /var/lib/mysql//private_key.pem。一部の認証プラグインは機能しません。 2020-08-24 14:08:23 13903 [注記] RSA 公開鍵ファイルが見つかりません: /var/lib/mysql//public_key.pem。一部の認証プラグインは動作しません。 2020-08-24 14:08:23 13903 [注記] サーバー ホスト名 (バインド アドレス): '*'; ポート: 3306 2020-08-24 14:08:23 13903 [注記] IPv6 が利用可能です。 2020-08-24 14:08:23 13903 [注記] - '::' は '::' に解決されます。 2020-08-24 14:08:23 13903 [注記] IP '::' にサーバー ソケットが作成されました。 2020-08-24 14:08:23 13903 [メモ] イベント スケジューラ: 0 個のイベントがロードされました 2020-08-24 14:08:23 13903 [メモ] /usr/sbin/mysqld: 接続準備完了。バージョン: '5.6.47' ソケット: '/var/lib/mysql/mysql.sock' ポート: 3306 MySQL コミュニティ サーバー (GPL)