这两天研究通过脚本来进行自动备份,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命令定期执行。