數據是非常重要的,所以數據備份必不可少!比如受到攻擊,或者人為誤操作時,備份數據就派上用場,及時恢復數據,將影響降到最低。下面以MySQL為例,利用mysqldump(mysql自帶工具)工具進行備份,實現每天整點定時備份數據庫(定時是利用linux的crontab,可以自己配置任意時間),并且只保留7天(時間可配置)
假設數據庫名為:test
第一步.創建腳本文件夾
mkdir /usr/local/mysql_backup/dump;
第二步.創建shell腳本
(1)cd mkdir /usr/local/mysql_backup;
(2)vim mysql_backup.sh
內容如下(備份數據庫test):
#!/bin/bash
# 設置mysql登錄用戶名和密碼
mysql_user=""
mysql_password=""
mysql_host=""
mysql_port=""
mysql_charset="utf8mb4"
# 備份存放地址
backup_location=/usr/local/mysql_backup/dump
log_location=/usr/local/mysql_backup/log.log
# 是否刪除過期數據
expire_backup_delete="ON"
expire_days=7
backup_time=`date +%Y-%m-%d_%H%M`
backup_dir=$backup_location
welcome_msg="===============into MySQL backup sh================"
# 判斷mysql實例是否正常運行
mysql_ps=`ps -ef |grep mysql |wc -l`
mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l`
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
echo $(date "+%Y-%m-%d %H:%M:%S") "ERROR:MySQL is not running! backup stop!">> $log_location
exit
else
echo $(date "+%Y-%m-%d %H:%M:%S") $welcome_msg>> $log_location
fi
# 備份指定數據庫中數據
echo $(date "+%Y-%m-%d %H:%M:%S") "begin dump db test">> $log_location
mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -B test> $backup_dir/test_$backup_time.sql
flag=`echo $?`
if [ $flag == "0" ];then
echo $(date "+%Y-%m-%d %H:%M:%S") "database test success backup">> $log_location
else
echo $(date "+%Y-%m-%d %H:%M:%S") "database test backup fail!">> $log_location
fi
# 刪除過期數據
if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then
`find $backup_location/ -type f -mtime +$expire_days | xargs rm -rf`
echo $(date "+%Y-%m-%d %H:%M:%S") "Expired backup data delete complete!">> $log_location
fi
第三步.添加定時任務
(1)crontab -e
添加(每個整點執行備份):00 */1 * * * /usr/local/mysql_backup/mysql_backup.sh >> /usr/local/mysql_backup/log.log
(2)service crond restart;
如果需要恢復數據庫到某個時間點的話,執行:
mysql -hhost -Pport -uroot -ppassword test< /usr/local/mysql_backup/dump/文件名.sql
效果:

目錄

生成的備份文件