序文数日前、友人がWeChatで私に連絡してきて、マシンがダウンタイムから復旧した後、本番データベースインスタンスが起動に失敗し、そのインスタンスには高可用性、災害復旧、バックアップ機能がないため、ビジネスに大きな影響が出ていると教えてくれました。彼は私が調査を手伝ってくれることを期待していたので、私はすぐに調査に参加しました。 シナリオ分析(1) まずエラーログを確認します。エラーメッセージは非常に明確です: 「ログファイルを開けませんでした」。ログファイルを開けません。 2021-01-06 13:23:51 20464 [エラー] ログを開けませんでした (ファイル '何かが明らかに間違っており、失敗する可能性があります。'、errno 2) 2021-01-06 13:23:51 20464 [エラー] ログファイルを開けませんでした 2021-01-06 13:23:51 20464 [エラー] tc ログを初期化できません 2021-01-06 13:23:51 20464 [エラー] 中止しています (2) 上記のエラーが表示された後、my.cnf の設定が正しいか、ログ ディレクトリとアクセス許可が正しいかを確認する必要がありますが、問題は見つかりませんでした。 # my.cnf を少なくする データディレクトリ=/var/lib/mysql ログ bin = mysql bin リレーログ=リレービン # ls -lrt -rw-rw---- 1 mysql mysql 1073761373 1月4日 06:18 mysql-bin.007351 -rw-rw---- 1 mysql mysql 1073755587 1月4日 09:26 mysql-bin.007352 -rw-rw---- 1 mysql mysql 1073777045 1月4日 12:07 mysql-bin.007353 -rw-rw---- 1 mysql mysql 1073742801 1月4日 15:12 mysql-bin.007354 -rw-rw---- 1 mysql mysql 1074087344 1月4日 18:13 mysql-bin.007355 -rw-rw---- 1 mysql mysql 1073869414 1月4日 21:32 mysql-bin.007356 -rw-rw---- 1 mysql mysql 1073771900 1月5日 00:16 mysql-bin.007357 -rw-rw---- 1 mysql mysql 213063247 1月5日 01:00 mysql-bin.007358 -rw-rw---- 1 mysql mysql 1073753668 1月5日 02:11 mysql-bin.007359 -rw-rw---- 1 mysql mysql 671219722 1月5日 03:31 mysql-bin.007360 -rw-rw---- 1 mysql mysql 1073774928 1月5日 07:34 mysql-bin.007361 -rw-rw---- 1 mysql mysql 1073845285 1月5日 11:33 mysql-bin.007362 -rw-rw---- 1 mysql mysql 1073756444 1月5日 15:37 mysql-bin.007363 -rw-rw---- 1 mysql mysql 1073790555 1月5日 19:37 mysql-bin.007364 -rw-rw---- 1 mysql mysql 1073768027 1月5日 23:59 mysql-bin.007365 -rw-rw---- 1 mysql mysql 311398643 1月6日 01:00 mysql-bin.007366 -rw-rw---- 1 mysql mysql 1071242043 1月6日 03:31 mysql-bin.007367 -rw-rw---- 1 mysql mysql 1010516229 1月6日 07:27 mysql-bin.007368 -rw-rw---- 1 mysql mysql 1651 1月 6 07:27 mysql-bin.index -rw-rw---- 1 mysql mysql 1073741824 1月6日 12:08 ib_logfile1 -rw-r--r-- 1 mysql mysql 183 1月6日 13:23 VM_58_10_centos-slow.log -rw-rw---- 1 mysql mysql 1073741824 1月6日 13:23 ib_logfile0 -rw-rw---- 1 mysql mysql 7492941 1月6日 13:23 VM_58_10_centos.err (3) エラーメッセージには非常に奇妙な点があります: ファイル「何かが間違いなく間違っており、失敗する可能性があります。」ログファイル名がなぜそんなに奇妙なのでしょうか?ここで知っておく必要があるのは、mysql-bin.index が binlog 関連の情報を記録することです。MySQL インスタンスを起動したら、このファイルを読み取って情報を取得する必要があります。次に、ファイルをチェックして、確かに問題があることを確認します。mysql-bin.index の後半は、エラー ログの内容を誤って書き込んでおり、インスタンスが起動時にエラーの内容 (binlog ログ ファイルとして扱われる) を読み取り、エラーの失敗を報告します。 # cat mysql-bin.index ./mysql-bin.007351 ./mysql-bin.007352 ./mysql-bin.007353 ./mysql-bin.007354 ./mysql-bin.007355 ./mysql-bin.007356 ./mysql-bin.007357 ./mysql-bin.007358 ./mysql-bin.007359 ./mysql-bin.007360 ./mysql-bin.007361 ./mysql-bin.007362 ./mysql-bin.007363 ./mysql-bin.007364 ./mysql-bin.007365 ./mysql-bin.007366 ./mysql-bin.007367 ./mysql-bin.007368 23:27:31 UTC - mysqld はシグナル 6 を取得しました。 これはバグに遭遇したためかもしれません。また、このバイナリが または、リンクされているライブラリの1つが破損しているか、不適切に構築されているか、 または構成が誤っています。このエラーは、ハードウェアの故障によっても発生する可能性があります。 役立つ情報を集めるために全力を尽くします 問題を診断するが、すでにクラッシュしているので、 何かが間違いなく間違っており、失敗する可能性があります。 キーバッファサイズ=16777216 読み取りバッファサイズ=3145728 最大使用接続数=523 最大スレッド数=800 スレッド数=522 接続数=522 mysqldは最大で key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 9037821 K バイトのメモリ 大丈夫だと思いますが、そうでない場合は、方程式内のいくつかの変数を減らしてください。 スレッドポインタ: 0x0 バックトレースを試行しています。次の情報を使用して調べることができます。 mysqldが死んだ。その後にメッセージが表示されない場合は、何かが起こった可能性があります。 ひどく間違っています... スタックボトム = 0 スレッドスタック 0x40000 http://dev.mysql.com/doc/mysql/en/crashing.htmlのマニュアルページには、 クラッシュの原因を突き止めるのに役立つ情報。 (4) 原因を特定した後、解決策はmysql-bin.indexファイルをバックアップし、手動で修復してからインスタンスを正常に起動することです。 # ./mysql スタート MySQL を起動しています.... 成功しました! mysql 接続を確認しています: 接続正常です! # ps -ef | grep mysqld ルート 22955 1 0 13:30 pts/5 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/VM_58_10_centos.pid mysql 23733 22955 24 13:30 pts/5 00:00:05 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/VM_58_10_centos.err --open-files-limit=20000 --pid-file=/var/lib/mysql/VM_58_10_centos.pid --socket=/var/lib/mysql/mysql.sock --port=3306 ルート 32075 14929 0 13:30 pts/5 00:00:00 grep mysqld 要約するこの時点で問題は解決しました。なぜエラーログの内容がmysql-bin.indexに書き込まれるのかについて、個人的にはクラッシュによりファイルが乱れている(ホストマシン上の他の仮想マシンのファイルシステムが破損している)のではないかと疑っています。最後に、本番システムを真剣に受け止める必要があり、バックアップ、高可用性、災害復旧はすべて不可欠であることを強調する必要があります。 上記は、MySQLインスタンスを起動できない問題の詳細な分析と解決策です。MySQLインスタンスを起動できないことの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: CSS3 3Dクールキューブ変形アニメーションの実装
>>: Dockerコンテナを停止および削除できない問題の解決策
MySQL バージョン: MySQL Community Edition (GPL) ------ ...
結果:実装コード: html <!-- よろしければハートを付けてください! --> &...
1. 基本的な使い方これは MutationObserver コンストラクターを通じてインスタンス化...
1. ネットワーク接続方法がブリッジされていることを確認する物理ネットワーク接続ステータスのコピーを...
目次node.js+nvm+npm を設定するnpmスイッチタオバオミラーVue.jsをインストール...
目次mysql 権限制御権限システムテーブル変更後にMySQLの権限を有効にする方法権限の付与と取り...
デモを作成するときにこのプラグインを使用していくつか問題が発生したため、プラグインの使用方法といくつ...
1. フレームセット、フレーム、iframeを使用して複数のウィンドウを実現する2. 画像上のマッ...
目次質問: ボタンをクリックすると、スパンの色が赤に変わりますか?上記の問題を分析します。 2番目の...
目次成し遂げる:要約:言うことはあまりありませんが、まずは効果を見てみましょう。 カードホバー、レス...
目次1. クロージャとは何ですか? 2. クロージャの役割2.1) メモリ2.2) プライベート変数...
高性能分散メモリオブジェクトキャッシュシステムMemcachedについては、別の記事「Windows...
MySQL の仕様によっては、テーブル作成仕様にすべてのフィールドが空であってはならないという要件を...
目次1. はじめに2. es5メソッド3. 非同期関数のシリアル実行4. 非同期関数の並列実行5. ...
1. はじめにこの記事では、Docker Swarm を使用して Nebula Graph クラスタ...