MySQL マスター/スレーブ ステータスを監視するシェル スクリプト

MySQL マスター/スレーブ ステータスを監視するシェル スクリプト

Linuxでシェルスクリプトを共有して、MySQLのマスタースレーブ状態を監視し、エンタープライズWeChatロボットと連携してアラームを鳴らす

  • SLAVE_IP: 監視対象ホストのIPアドレス
  • ユーザー: msyql ユーザー
  • パスワード: mysql パスワード
  • WHEREIS_MYSQL: mysql コマンド パス
  • WEBHOOK: WeChat Enterprise ロボットの Webhook アドレス
  • wx(): WeChat for Enterprise ロボット関数
  • Check_Mysql_Slave(): 監視スクリプトのメイン関数
#!/bin/bash
#
ソース /etc/profile
PATH をエクスポートします。"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SLAVE_IP=`ip add | grep inet | grep brd | awk -F / '{print $1}' | awk -F " " '{print $2}' | awk 'NR==1'`
USER=モニター
パスワード=xxxxxx
TIME=`日付`
WHEREIS_MYSQL = /opt/mysql/bin/mysql
WEBHOOK='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=bb09197b-5ff6-4928-9872-xxxxxx'

wx(){
cat > $0.msg << EOF
curl '$WEBHOOK' \
 -H 'コンテンツタイプ: application/json' \
 -d '
 {
  "メッセージタイプ": "テキスト",
  "文章": {
   "コンテンツ": "$1",
  }
 }'
終了
sh $0.msg && rm -rf $0.msg
}


チェック_Mysql_スレーブ()
{
 $WHEREIS_MYSQL -u$USER -p$PASSWORD -h$SLAVE_IP -e "select version();" >/dev/null 2>&1
 [ $? -ne 0 ]の場合;
  echo "Mysql は $DATE に停止されました" >> /data/mysql/check.log
    ERROR="エラー:Mysql-$SLAVE_IP は接続できません\n$TIME"
  wx "$エラー"
 それ以外
  #echo "1" >> /data/mysql/check.log
    IO_SQL_STATUS=`$WHEREIS_MYSQL -u$USER -p$PASSWORD -h$SLAVE_IP -e "スレーブステータスを表示 \G" 2>/dev/null | awk '/Slave_.*_Running:/{print $1$2}'`
    $IO_SQL_STATUS の i に対して、
      スレッドステータス名=${i%:*}
      スレッドステータス=${i#*:}
      [ "$THREAD_STATUS" != "Yes" ] の場合;
        STATUS="エラー:Mysql-$SLAVE_IP $THREAD_STATUS_NAME のステータスは $THREAD_STATUS です!\n$TIME"
    echo "$STATUS" >> /data/mysql/check.log
        wx "$ステータス"
      フィ
    終わり
  フィ
}

チェック_Mysql_スレーブ

最終的なアラーム効果は次のとおりです。

上記は、MySQL のマスタースレーブ状態を監視するためのシェルスクリプトの詳細です。MySQL のマスタースレーブ状態監視の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • シェル スクリプトを使用してワンクリックで MySQL 5.7.29 をインストールする方法
  • MySQLの一般的なバックアップコマンドとシェルバックアップスクリプトの共有
  • MySQL データベースのデータを定期的にバックアップし、指定した期間保持するシェル スクリプト
  • シェル スクリプトは、仮想マシンの基本構成の作成を自動化します: tomcat--mysql--jdk--maven
  • MySQL のスケジュールされたバックアップ、削除、および回復機能を実装するシェル スクリプト
  • 各Mysqlテーブルの行数を正確にカウントする小さなシェルスクリプト
  • シェルスクリプトを使用して、サーバー上にMySQLデータベースアカウントを一括作成します。
  • シェルスクリプトを使用してMySQLにインデックスを追加する方法
  • このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)
  • シェル スクリプトを使用して複数の MySQL データベースを毎日自動的にバックアップする方法
  • MySQL Shellの紹介とインストール

<<:  初心者がHTMLタグを学ぶ(1)

>>:  Dockerはローカルディレクトリとデータボリュームコンテナ操作をマウントします

推薦する

MySQL トランザクション分離レベルの原則例分析

導入あなたも面接でこれに遭遇したことがあるはずです。トランザクションの分離レベルについてお話ししまし...

CSS3 フレックスレイアウトを使用して要素を均等に分散するサンプルコード

この記事では主に、CSS3 フレックスレイアウトを使用して要素を均等に配置する方法を紹介します。自分...

gbk utf8 GBK と UTF-8 ウェブページエンコーディングを正しく理解して使用する方法

Web ページ エンコーディングは英語では web page encoding と翻訳され、Web ...

MySQL テーブルの読み取り、書き込み、インデックス作成、その他の操作の SQL ステートメントの効率最適化の問題を分析します。

前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...

MySQL データベースの最適化に関する 9 つのヒント

目次1. 最も適切なフィールド属性を選択する2. フィールドをNOT NULLに設定してみる3. サ...

Linux 上でプライベート Git サーバーを構築するための詳細なチュートリアル

1. サーバーのセットアップリモート リポジトリは実際にはローカル リポジトリと何ら変わりなく、純粋...

MySQL グローバルロックとテーブルレベルロックの具体的な使用法

目次序文グローバルロックテーブルロックテーブルロックメタデータ ロック (MDL ロック)要約する参...

CSSテキストシャドウの徐々にぼやける効果の実装

テキストシャドウテキストに影を追加します。テキストとテキスト装飾に複数のシャドウを追加することができ...

Linuxはシェルスクリプトを使用して履歴ログファイルを定期的に削除します

1. ツールディレクトリのファイル構造 [root@www tools]# ツリーツール/ ツール/...

iframe パラメータの説明と例

<iframe src=”test.jsp” width=”100″ height=”50″ ...

TypeScriptの基本型の詳細な説明

目次ブール型数値型文字列型文字列と数値を連結する未定義およびnull配列型タプル型列挙型あらゆるタイ...

HTML で js を使用してローカル システム時間を取得する

コードをコピーコードは次のとおりです。 <div id="名前"> ...

はじめに: HTML の基本的なタグと属性の簡単な紹介

HTML はタグと属性で構成されており、これらを組み合わせてブラウザにページの表示方法を指示します。...

Vue でユーザー権限に基づいてルートを動的に追加する方法

ユーザーの権限に応じて異なるメニュー ページを表示します。知識ポイントルートガード(事前ガードを使用...

プレーンな JS オブジェクトの代わりに Map を使用する場合

目次1. マップは任意のタイプのキーを受け入れます2. マップにはキー名に関する制限はありません3....