shell腳本使用xtrabackup恢復mysql數據庫

上篇已經弄好了自動備份的shell腳本:shell腳本使用xtrabackup備份mysql數據庫
遂研究了恢復的腳本,比較容易實現,代碼如下:

[[email protected] 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命令。

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