【MySQL】ハウスキーピング用スクリプト

2023年7月30日MySQL

MySQLのハウスキーピング用スクリプト


データベースのバックアップスクリプト

処理概要

  • mysqldump コマンドをOSから実行する

バックアップ対象

  • workbook データベースの全テーブル

ログファイル

  • 作業の経過が分かるように開始時刻と終了時刻を出力する
  • バックアップ失敗時はファイル名に _error が付与される
#/bin/bash

# rootのパスワードを設定
PW="***"

# バックアップファイルのパス設定
BACKUP_DIR="/home/script/data/mysql_backup"
FILENAME=date +"%Y%m%d%H%M%S"

# ログファイルのパス設定
LOG_DIR="/home/script/log/mysql_backup"
TMP_FILE=${LOG_DIR}/${FILENAME}_tmp.log
LOG_FILE=${LOG_DIR}/${FILENAME}.log
ERR_LOG_FILE=${LOG_DIR}/${FILENAME}_error.log

# ディレクトリの作成
mkdir -p ${BACKUP_DIR}
mkdir -p ${LOG_DIR}

echo "バックアップ開始:"date +%H:%M:%S > ${TMP_FILE}
echo "" >> ${TMP_FILE}

# バックアップ処理
mysqldump --opt --password=${PW} workbook > ${BACKUP_DIR}/${FILENAME}.sql

if [ $? = 0 ]; then
    echo "バックアップ正常終了:"date +%H:%M:%S >> ${TMP_FILE}
    mv ${TMP_FILE} ${LOG_FILE}
else
    echo "バックアップ失敗:"date +%H:%M:%S >> ${TMP_FILE}
    mv ${TMP_FILE} ${ERR_LOG_FILE}
fi

exit 0

データベースのメンテナンススクリプト

処理概要

  • mysqlcheck コマンドをOSから実行する

メンテナンス対象

  • workbook データベースの全テーブル

ログファイル

  • 作業の経過が分かるように開始時刻と終了時刻を出力する
  • 最適化の実行前後でテーブルのステータスをログに出力する
#/bin/bash

# rootのパスワードを設定
PW="***"

# ログファイルのパス設定
FILENAME=date +"%Y%m%d%H%M%S"
LOG_DIR="/home/script/log/mysql_mainte"
LOG_FILE=${LOG_DIR}/${FILENAME}.log

mkdir -p ${LOG_DIR}

echo "メンテナンス開始:"date +%H:%M:%S > ${LOG_FILE}
echo "" >> ${LOG_FILE}

echo "最適化前のステータス" >> ${LOG_FILE}
mysql workbook -u root -p${PW} -e "show table status\G" >> ${LOG_FILE}
echo "" >> ${LOG_FILE}

echo "最適化開始:"date +%H:%M:%S >> ${LOG_FILE}
echo "" >> ${LOG_FILE}
mysqlcheck workbook --auto-repair --optimize -u root -p${PW} >> ${LOG_FILE}
echo "" >> ${LOG_FILE}

echo "最適化完了:"date +%H:%M:%S >> ${LOG_FILE}
echo "" >> ${LOG_FILE}

echo "最適化後のステータス" >> ${LOG_FILE}
mysql workbook -u root -p${PW} -e "show table status\G" >> ${LOG_FILE}
echo "" >> ${LOG_FILE}

echo "メンテナンス完了:"date +%H:%M:%S >> ${LOG_FILE}

exit 0

MySQL

Posted by junichi