Mysqlバックアップローテーションスクリプト - CentOS|Systems Engineer Wiki
Systems Engineer Wiki
訪問者:31,811,468 人目
Mysqlバックアップローテーションスクリプト
投稿日:2015-01-05 14:00:10
Mysqlバックアップローテーションスクリプト
CentOS 6.X Mysqlのバックアップスクリプトを紹介します。 今回は、Mysqlのインスタンス毎に日次バックアップ(7ローテーション)するバックアップスクリプトをシェルで作成してみました。 インスタンス毎にエクスポートされたデータは、GZIP形式で圧縮され所定の場所に出力されます。 ファイル名に曜日が格納される為、直近7日間のバックアップデータが存在する形式になります。
#!/bin/sh # 曜日データ算出 function week { case `date '+%w'` in 0 ) echo "Sun";; 1 ) echo "Mon";; 2 ) echo "Tue";; 3 ) echo "Wed";; 4 ) echo "Thu";; 5 ) echo "Fri";; 6 ) echo "Sta" esac } # データベース接続情報 DB_USER="[データベースアカウント]" DB_PASS="[データベースパスワード]" DB_HOST="[データベースIP]" # データベース全インスタンス名取得 DB_REPO_LIST=`mysqlshow -u ${DB_USER} -p${DB_PASS} -h ${DB_HOST}` # データベース全インスタンス名配列変換 DB_REPO=(`echo ${DB_REPO_LIST} | sed -e "s/ |//g"`) # バックアップサーバIP # ※データベースサーバが複数台ある場合に区別する為に設定 SERVER_GIP="[サーバIP]" # バックアップファイル格納領域設定 BACKUP_DIR=/backup/db BACKUP_WEEK=`week` # バックアップファイル格納領域へ移動 cd ${BACKUP_DIR} # データベースインスタンス毎データフルダンプ処理実行 for ((i=3; i<${#DB_REPO[@]}-1; i++)) do echo "${DB_REPO[i]}" echo "${SERVER_GIP}.${BACKUP_WEEK}.${DB_REPO[i]}.dump" # バックアップファイル名称 BACKUP_FILE=${SERVER_GIP}.${BACKUP_WEEK}.${DB_REPO[i]}.dump # バックアップ圧縮ファイル名称 GZIP_BACKUP_FILE=${SERVER_GIP}.${BACKUP_WEEK}.${DB_REPO[i]}.gz # ダンプ処理 mysqldump -u ${DB_USER} -p${DB_PASS} -h ${DB_HOST} --single-transaction --add-drop-table ${DB_REPO[i]} | \ gzip -c > ${GZIP_BACKUP_FILE} done
ホームページの特性上スクリプトのインデント部分は、全角スペースを使用しております。 その為、記載されているスクリプトをコピペしても動作致しませんので注意して下さい。