shell腳本使用xtrabackup備份mysql數據庫

這兩天研究通過腳本來進行自動備份,shell腳本如下:
更新:已完成恢復的腳本(恢復的腳本

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

運行:

[[email protected] shell]# sh xtrabackup.sh

編寫的 shell腳本如果是在windows下編寫的,會報錯如下:

[[email protected] shell]# $'\r': command not found

因爲每行結尾是\r\n 的Unix結果行是\n 所以在Linux下運行腳本 會任務\r 是一個字符,所以運行錯誤,需進行文件轉換,兩個辦法:

方法一:

[[email protected] shell]# sed -i 's/\r//' 腳本名

方法二:

[[email protected] shell]# yum -y install dos2unix

[[email protected] shell]# dos2unix  腳本名

如果想對腳本設置執行計劃,可以使用crontab命令定期執行。

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