shell脚本使用xtrabackup备份mysql数据库

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fancy橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值