「シェルの学習」Linux環境に定時にmysqlデータベースをバックアップするのを実現サンプル

1.crontab -e
30 4 * * * sh /data/tools/mysqlbackup.sh //毎日4時半データベースをバックアップ
シェルファイル名: mysqlbackup.sh
役割:最近5日のデータをバックアップ

2.シェルコード:

#データベース名、データベースユーザ名、パスワード、バックアップパス、ログパス、データファイル場所を設定
#ディフォルトバックアップ方式はtarまたはmysqldump,mysqldotcopy
#ディフォルトの場合,バックアップ場所/root/dbxxxxx.tgz

DBName="startnews24_neko"
DBUser="root"
DBPasswd="pwd_startnews24″
BackupPath="/data/mysql_backup/"
LogFile="/data/mysql_backup/db.log"
#DBPath="/opt/lamp/mysql/"
BackupMethod="mysqldump"
BackupMethodPath="/opt/lamp/bin/mysqldump"

NewFile="$BackupPath"db$(date +%y%m%d).tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d –date=’5 days ago’).tgz

echo “——————————————-" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo “————————–" >> $LogFile

#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >> $LogFile 2>&1
echo “[$OldFile]古いファイルを成功に削除!" >> $LogFile
else
echo “[$OldFile]古いバックアップファイルが存在しません!" >> $LogFile
fi

if [ -f $NewFile ]
then

echo “[$NewFile]バックアップファイルが存在するのでバックアップできません!" >> $LogFile
else
case $BackupMethod in
mysqldump)
if [ -z $DBPasswd ]
then
echo “$BackupMethodPath -u $DBUser –opt $DBName > $DumpFile"
$BackupMethodPath -u $DBUser –opt $DBName > $DumpFile
else
echo “$BackupMethodPath -u $DBUser -p$DBPasswd –opt $DBName"
$BackupMethodPath -u $DBUser -p$DBPasswd –opt $DBName > $DumpFile
fi
tar -czvf $NewFile $DumpFile >> $LogFile 2>&1
echo “[$NewFile]バックアップ成功!" >> $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo “[$NewFile]バックアップ成功!" >> $LogFile
rm -rf $DumpFile
;;
esac
fi

echo “——————————————-" >> $LogFile

Development

Posted by arkgame