RDS 再起動時に実際にDBに接続できない時間を計測する

これはなに

なんらかの事情によりAWSコンソールでRDSインスタンスを再起動する必要が生じることがある。

再起動よってDBにアクセス不能となった時間を計測したい時があるかもしれない。そんな時のためのシェルスクリプト

使い方

これを実行しながらAWSコンソールで再起動を行い、標準出力を確認する。

サンプルコード

/var/tmp/mysql.confとして設定ファイルを用意しておいてください。

#!/bin/bash

MYSQL_SCHEMA="db_name"
ROOT_DIRECTORY="/var/tmp"
CMD_MYSQL="mysql --defaults-extra-file=$ROOT_DIRECTORY/mysql.conf -t --show-warnings $MYSQL_SCHEMA"

QUERY="SELECT id FROM table where id = 1;"

FLAG=0
while :
do
    VALUE=`echo ${QUERY} | ${CMD_MYSQL}`
    RESULT=$? 
    echo $VALUE
    if [ $FLAG -eq 0 ]; then
        if [ $RESULT -eq 0 ]; then
            sleep 1
        else
            FLAG=1
            SECONDS=0
            echo "[INFO] 計測開始"
            sleep 1
        fi
    else
        if [ $RESULT -eq 0 ]; then
            time=$SECONDS
            echo "[INFO] 計測終了"
            break;
        else
            sleep 1
        fi
    fi
done

echo $time

参考

シェルからMySQLのSQLを実行する方法、サンプル