概要

MySQLのダンプを生成し、指定された回数のローテートを行うスクリプト。

設定

以下の値は環境に合わせて変更する。

ROTATE世代管理数
DBUSERMySQLへアクセスするユーザ名
DBPASS上記ユーザのパスワード
BACKUPLOGバックアップの処理ログ出力先(ファイル名)

使い方

バックアップ対象とバックアップ先は実行時に引数で指定する。

  • 書式
    ./mysql-dumpbackup.sh  [TargetDatabase] [OUTPUT FILE NAME]
  • ./mysql-dumpbackup.sh  users /backup/hogehoge/users.dump

ソース

#!/bin/sh
# ------------------------
#  mysql dump make script
# ------------------------
# Version : 1.0
# date    : 2010/01/13

export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/mysql/bin:/usr/local/mysql/sbin:$PATH

## Set
ROTATE="30"
DBUSER="[MySQL USER]"
DBPASS="[MySQL PASSWORD]"
DATEM=`date +%Y%m`
BACKUPLOG="/home/system/logs/backup_"$DATEM".log"


# TARGET
if [ -z $1 ]; then
 echo "ERR : target Database unknown" >> $BACKUPLOG
 echo "ERR : target Database unknown"
 echo "USE : ./mysql-dumpbackup.sh  [TargetDatabase] [OUTPUT FILE NAME]"
 exit 0
else
 DBNAME=$1
fi

# OUTPUT
if [ -z $2 ]; then
 echo "ERR : Output File unknown" >> $BACKUPLOG
 echo "ERR : Output File unknown"
 echo "USE : ./mysql-dumpbackup.sh  [TargetDatabase] [OUTPUT FILE NAME]"
 exit 0
else
 OUTFILE=$2
fi

## Exec

# Rotate

test -f $OUTFILE.$ROTATE && rm -rf $OUTFILE.$ROTATE 
while [ $ROTATE -ge 1 ];
do
 i=$((ROTATE-1))
 if [ -f $OUTFILE.$i ]; then 
  mv $OUTFILE.$i $OUTFILE.$ROTATE
 fi
  ROTATE=$i
done

test -f $OUTFILE && mv $OUTFILE $OUTFILE.1

# MySQL dump

mysqldump -u $DBUSER --password=$DBPASS $DBNAME > $OUTFILE

# EOF

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-14 (木) 13:23:14 (5215d)