まずはそのバックアップ用のディレクトリーを作ります
mkdir /home/example_user/MySQL_Backup mkdir /home/example_user/MySQL_Backup/script vim /home/example_user/MySQL_Backup/script/backup.sh
ここでスクリプトの本体を入力します
#!/bin/bash
BK_PATH="/home/example_user/MySQL_Backup"
DATE="`date +'%m%d%Y-%H%M%S'`"
CONFIG_PATH="$BK_PATH/script"
DB_USER="root"
DB_PASS="mysql_password"
DB_TOBACKUP="to_backup.txt"
LOG="log.txt"
LOGDATE="`date +'%m/%d/%Y-%H:%M:%S'`"
DELETE="delete.txt"
FTP="ftp://ftp_user:ftp_password@ftp_server.domain.tld/MySQL_Backup/"
echo "---------------Backup Starts @ ""$LOGDATE""---------------" >> $CONFIG_PATH/$LOG
echo -----Backup----- >> $CONFIG_PATH/$LOG
cat $CONFIG_PATH/$DB_TOBACKUP | while read LINE
do
mysqldump --opt --force -u$DB_USER -p$DB_PASS $LINE > "$BK_PATH/""$LINE""_$DATE.sql"
echo $LINE >> $CONFIG_PATH/$LOG
done
echo -----Delete----- >> $CONFIG_PATH/$LOG
find $BK_PATH -ctime +7 -type f -name "*.sql" -print > $CONFIG_PATH/$DELETE
cat $CONFIG_PATH/$DELETE | while read LINE
do
wput -nc -t 10 --basename=$BK_PATH/ $LINE $FTP
rm $LINE
echo $LINE >> $CONFIG_PATH/$LOG
done
echo "---------------Backup Ends @ ""$LOGDATE""---------------" >> $CONFIG_PATH/$LOG
自分でデータベースやFTPサーバーなどの情報を編集することを忘れないように
次はバックアップするつもりのデータベース名を指定します
vim /home/example_user/MySQL_Backup/script/to_backup.txt
1行に1つの名ずつを書きます。
database_1 database_2 database_3
そしてバックアップスクリプトに実行の権限を与えます
chmod +x /home/example_user/MySQL_Backup/script/backup.sh
最後には
crontab -e
でcronスケジューラを呼び出して、
0 4 * * * /home/example_user/MySQL_Backup/script/backup.sh
を追加して保存し終わってcronを再開します
sudo service cron restart
これで指定したデータベースは毎朝四時に自動にバックアップされます。更にスペースを節約するために、一週間前のバックアップファイルはFTPサーバーにアップロードされて削除されます。
