Mysqlバックアップローテーションスクリプト - CentOS|Systems Engineer Wiki

Systems Engineer Wiki

訪問者:23,227,838 人目

<< 2023年03月 

1234
567891011
12131415161718
19202122232425
262728293031
お知らせ・メンテナンス情報
  >  
  >  
Mysqlバックアップローテーションスクリプト

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

ホームページの特性上スクリプトのインデント部分は、全角スペースを使用しております。 その為、記載されているスクリプトをコピペしても動作致しませんので注意して下さい。