這兩天研究通過腳本來進行自動備份,shell腳本如下:
更新:已完成恢復的腳本(恢復的腳本)
[root@xtrabackup shell]# cat xtrabackup.sh
#!/bin/bash
#環境變量
my_date=$(date +%-F)
my_back=/home/mysqlbackup/backup
#innobackupex備份命令
my_backup=$(which innobackupex)
#用戶配置
my_user=root
my_pass=password
#選填
#my_port=3306
#my_host=localhost
function backup_db()
{
#該函數用於用備份數據庫
#該變量爲備份目錄的位置 備份目錄命名格式:xxxx-xx-xx
bakcup_path=${my_back}/${my_date}
#該判斷用於判斷是否存在目錄
#不存在則生成該目錄存在則刪除該目錄並新建該目錄
if [ ! -d ${bakcup_path} ];then
mkdir -p ${bakcup_path}
else
rm -rf ${bakcup_path}
mkdir -p ${bakcup_path}
fi
#用於執行備份操作
#實際命令是這樣的:innobackupex --user=root --password=password /home/mysqlbackup/backup
${my_backup} --user=${my_user} --password=${my_pass} ${bakcup_path}
}
function delete_db()
{
#刪除mysql庫和performance_schema庫(這一步是公司特殊要求,不要模仿)
find ${my_back} -name "mysql"|xargs rm -rf
find ${my_back} -name "performance_schema"|xargs rm -rf
}
#function cleanbackup()
#{
#清理超過10天的備份信息,可用可不用。
# find ${my_back}/ -ctime +10 -type d|xargs rm -rf
#}
backup_db
delete_db
#cleanbackup
運行:
[root@xtrabackup shell]# sh xtrabackup.sh
編寫的 shell腳本如果是在windows下編寫的,會報錯如下:
[root@xtrabackup shell]# $'\r': command not found
因爲每行結尾是\r\n 的Unix結果行是\n 所以在Linux下運行腳本 會任務\r 是一個字符,所以運行錯誤,需進行文件轉換,兩個辦法:
方法一:
[root@xtrabackup shell]# sed -i 's/\r//' 腳本名
方法二:
[root@xtrabackup shell]# yum -y install dos2unix
[root@xtrabackup shell]# dos2unix 腳本名
如果想對腳本設置執行計劃,可以使用crontab命令定期執行。