朝早くに電話で起こされました。あるプロジェクトのデータベースがダウンしていて起動できないとのことでした(寝すぎでアラームのテキストメッセージは聞こえませんでした)。とても怖かったです! 電話の相手は、MySQLデータベースのマスターデータベースはすべて起動できないが、スレーブデータベースは正常だと言っていました。マスターデータベースが他のAlibaba Cloudマスターデータベースに接続しているのではないかと疑われました。これらのデータベースは以前に Alibaba Cloud から IDC のコンピュータ ルームに移行されていたため、彼はこのような判断を下しました。 すぐにコンピュータの電源を入れ、***に接続し、データベースサーバーの1つにログインし、次のコマンドを実行してmysqlサービスを開始してみます。
起動に失敗し、別のデータベース サーバーを試しましたが、それでも失敗しました。すべてのデータベースを起動できないことを考慮すると、問題はデータベース ホストの問題によって発生している可能性があると暫定的に判断できます。 データベースの基本的な設計は、仮想化された 2 つの物理ノードと、バックアップ用の 1 つの物理マシンです。 1 台の物理マシン上のすべての仮想マシンは MySQL マスター データベースとして使用され、別の物理マシン上の仮想マシンは MySQL スレーブ データベースとして使用されます。 仮想マシンでのトラブルシューティングをあきらめて、すぐにホスト システムにログインします。次に、2 つの側面から問題のトラブルシューティングを行います。 ü 仮想化されたバックエンド管理システム ストレージがいっぱいで問題が深刻であることが判明しました。 ü ホストシステム debian への SSH ログイン
システム ログ /var/log/messages に多数のディスク IO エラーが見つかりました。 上記の調査結果に基づいて、基本的にはディスクに問題があると結論付けることができます。1 つの問題は、proxmox によって割り当てられたストレージ領域がいっぱいであることであり、もう 1 つはディスク IO エラーです。問題がわかったら、エラーを修正するか、スレーブ データベースをマスター データベースに昇格するという 2 つの解決策があります。スタンバイの問題を考慮すると、マスター データベースの修復に最善を尽くす必要があります。修復できない場合は、2 番目の解決策 (スレーブ データベースの昇格) を使用できます。 ディスクスペースを解放する ディスク容量がいっぱいになるのはなぜですか?誰かが仮想マシン上で何か操作を行った可能性があり、各仮想マシンが同じ操作を実行したために、ホスト マシンのディスク領域がすぐにいっぱいになった可能性があります。 MySQLデータベースを実行している仮想マシンにログインし、コマンドを実行します。
他のサーバーにログインすると、パーティション /dev/sdb1 も 90% 以上使用されています。ディレクトリ /data に入り、次のコマンドを実行してディレクトリのスペース使用量を表示します。
なんと、50G を超えるディレクトリがいくつもあります (この記事を書いているときに削除したので、記録は残っていません)。ディレクトリ名から判断すると、これらのファイルはバックアップ データベースによって自動的に生成されたものと思われます。無視して、まず削除してください。 誰かがシステム内で自動タスクを実行したに違いありません。crontab –l コマンドで確認したところ、次のことがわかりました。
一見すると、このスクリプトには何の問題もありません。しかし、よく見ると、最後の行に「~」記号があることがわかります。何かが間違っています。スクリプトを書いた人の意図は、ディスクがいっぱいにならないように、データベースを 1 日に 1 回バックアップし、前日の履歴バックアップ データを削除することでした。 しかし、ここでは 2 つの致命的な問題について説明します。 バックアップ戦略エラー 専用のバックアップ システムがあり、ローカル バックアップではなくこのシステムにデータをバックアップする必要があります。 間違った手段 バックアップ スクリプトが記述されたら、手動で実行してその正確性を確認する必要があります。書いた後にそのままそこに放り込むのではなく。 ディスクエラーを修復する 緊急にコンピュータ室に連絡し、技術者に KVM をホスト マシンに接続するよう依頼してください。システムを起動できない場合は、リモートでシステムを表示するか、シングル ユーザー モードに入って fsck などの修復操作を実行できます。 SSH を使用してホスト システムの Debian に接続し、ディスク領域がすべて解放されたことを確認してから、reboot を実行してシステムを再起動します。数分後、システムが正常に起動します。 その後の操作 システム ログを確認すると、ディスク IO エラーはなく、ディレクトリとファイルの作成は正常であり、各仮想マシンの起動とその上のデータベースの起動はすべて正常です。 すべての関係者に通知し、ビジネスの観点からすべてが正常かどうかを確認します。しばらくすると、テキストメッセージでたくさんの回復メッセージが届き、とても安心しました。言うまでもなく、これを実行したのはプロジェクトの SA であり、誰にも通知しませんでした。 彼に個人的に伝え、他の人にも説明するよう頼んでください。将来何か危険なことをするなら、お互いに知らせ合うのがベストです。 以上が私が紹介した内容です。このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了する方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。 以下もご興味があるかもしれません:
|
>>: Linux での nginx のインストール、展開、使用方法の詳細な説明
1. MySQL 5.7.11 zipインストールパッケージをダウンロードするこのマシンはwin7 ...
最初のステップ組み込みのパッケージ管理機能で一度削除する yum 削除 nodejs npm -y ...
目次序文開発環境新しいプロジェクトを作成するモバイルウェブプロジェクト角度付きJSONパブリックモジ...
Excel のエクスポートは、docker 環境では常に失敗します。最も直接的な原因は、中国語フォン...
Web ページを作成するときに、特定のフォントを使用したい場合は、 @font-faceを介して参照...
脆弱性の説明Apache Flink は、分散ストリームおよびバッチ データ処理用のオープン ソース...
Async Hooks は Node8 の新機能です。NodeJs の非同期リソースのライフサイクル...
目次序文ミキシンMixin ノート (重複名)ローカルミックスイングローバル ミックスイン継承するミ...
実稼働環境で起こる最も嬉しいことは、シナリオによっては、更新または削除時にパラメータを無視せざるを得...
一部の Web ページは大きく見えなくても開くのに非常に時間がかかる場合があります。一方、他の We...
序文最近、いくつかのフロントエンド プロジェクトに取り組んでおり、ページにいくつかのテーブルを表示す...
成果を達成する実装コードhtml <div>123WORDPRESS.COM</d...
レスポンシブ レイアウト システムは、今日の一般的な CSS フレームワークではすでに非常に一般的で...
<br />最近、UCDChina は「インターフェース上のテキストに注意を払う」という...
1. インストールターミネーターの最大の特徴は、1つのウィンドウで複数のターミナルを開くことができる...