shell脚本使用xtrabackup恢复mysql数据库

上篇已经弄好了自动备份的shell脚本:shell脚本使用xtrabackup备份mysql数据库
遂研究了恢复的脚本,比较容易实现,代码如下:

[root@xtrabackup shell]# cat xtrarecover.sh
#!/bin/bash
#环境变量
my_date=$(date +%-F)
my_back=/home/mysqlbackup/backup
mysqlbak=/home/mysqlbak
mysql=/home/mysql
bakcup_path=${my_back}/${my_date}

#innobackupex命令
my_backup=$(which innobackupex)

#用户配置
my_user=root
my_pass=password
#my_port=3306
#my_host=localhost

function shutdown_mysql()
{
 #首先停掉mysql服务
 mysqladmin -u${my_user} -p${my_pass} shutdown
}


function mv_mysql()
{
 #判断要移到的mysqlbak文件是否存在,存在就删掉,节省内存

 if [ ! -d ${mysqlbak} ];then
    mkdir -p ${mysqlbak}
  else
    rm -rf ${mysqlbak}
    mkdir -p ${mysqlbak}
  fi
 #移除掉mysql数据目录(不删除恢复时候会报错Original data directory is not empty! )
 mv ${mysql} ${mysqlbak}
}



function prepare()
{
 # 准备 apply-log
 find ${bakcup_path}/ -name ${my_date}_*|xargs ${my_backup}  --apply-log --redo-only
}

function recover_all()
{
 #全部恢复
 find ${bakcup_path}/ -name ${my_date}_*|xargs ${my_backup} --defaults-file=/etc/my.cnf --copy-back
}


function chown_mysql()
{
 #修改权限并重启服务
 chown mysql:mysql -R ${mysql}
 mysqld &
}





shutdown_mysql
mv_mysql
prepare
recover_all
chown_mysql

脚本执行完可看到已经同步成功,并且mysql服务已重启:
在这里插入图片描述

可能对我的路径存在一些疑问,看这个图吧,都是在/home文件夹下的:
在这里插入图片描述
mysqlbackup是我本机的备份目录,我做的备份是本机备份,本机恢复,如果远程备份并恢复到本地的话,这个文件夹应该存在于远程机器的目录下。
在这里插入图片描述
与备份相同,如果想要定时执行,可使用crontab命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章