mysql数据库备份与恢复脚本
admin
2023-05-29 12:01:28
0

#!/bin/bash

#mysql database backup and restore the script


# define config variable

host=localhost

user=root

passwd=xxxxx

#this variable for grant

mainHostIp="127.0.0.1"

base_path=/opt/disk-webData/mysqlBackup

# base_path=/media/sf_website/yii/disk-webData/mysqlBackup



### backup

backupdb() {


  bak_path=$base_path/$(date +%Y%m%d)/data

  log_path=$base_path/$(date +%Y%m%d)/log


  [ ! -d $bak_path ] && mkdir -p $bak_path

  [ ! -d $log_path ] && mkdir -p $log_path


  dblist=($(mysql -u$user -p$passwd -e "show databases;"|awk -F "|" '{print $1}'|grep -Ev "Database|mysql|information_schema|performance_schema"))


  i=1

  for dbname in "${dblist[@]}"

  do

    echo -e "\n$i --> Backup database $dbname ..."

    file=$bak_path/"$dbname.sql"

    mysqldump -h$host -u$user -p$passwd -B $dbname > $file

    if [ -f $file ];then

      success="$i --> $dbname backup success!"

      echo $success;

      echo $success >> $log_path/backupLog.log

      echo "GRANT ALL PRIVILEGES ON $dbname.* TO admin@localhost;" >> $log_path/grant.log

      echo "GRANT ALL PRIVILEGES ON $dbname.* TO admin@$mainHostIp;" >> $log_path/grant.log

    fi

    let i++

  done


}



#restore

expr 1 + $1 &>/dev/null

if [ $? -eq 0 ];then


  bak_path="$base_path"/$1/data

  log_path="$base_path"/$1/log


  #restore

  cd $bak_path

  dblist=($(ls))

  i=1

  for dbname in "${dblist[@]}"

  do

    echo -e "\n$i --> Restore database $dbname ..."

    mysql -h$host -u$user -p$passwd < $dbname

    success="$i --> $dbname restore success!"

    echo $success

    echo $success >> $log_path/restoreLog.log

    let i++

  done


  #grant

  # if [ -f $log_path/grant.log ];then

    echo "Please ensure that [admin] user exist @[localhost & 127.0.0.1 & mainHostIp]";

    sleep 15s

    ii=1

    cat $log_path/grant.log | while read line

    do

      echo "$ii --> $line"

      mysql -h$host -u$user -p$passwd -e "$line"

      let ii++

    done

  # fi



elif [ "$1" == backup ];then


  backupdb


else


  cd $base_path

  dblist=($(ls))

  i=1;

  echo "Backup history ..."

  for dbname in "${dblist[@]}"

  do

    echo "$i --> $dbname"

    let i++

  done


fi


相关内容

热门资讯

致2026级新生:这份2026... 在接下来的日子里,2026级的新同学将陆续收到那份期盼已久的录取通知书,正式成为黄河科技学院的一员。...
日本车企丰田在乌克兰的仓库被炸 8月5日,“丰田-乌克兰”官方帐号在社交媒体发文称,8月4日晚至8月5日凌晨,“丰田-乌克兰”的汽车...
因通信失误,特朗普所乘直升机与... 【环球网报道 记者 闫珮云】美国总统特朗普所乘直升机当地时间4日在华盛顿遭遇飞行安全事件。《纽约时报...
美国一政客在沙滩上与他人发生肢... 【环球网报道】据福克斯新闻网等美媒8月5日报道,美国民主党籍众议院候选人基里尔·巴辛日前在夏威夷沙滩...
休达移民潮观察:我在西班牙看到... 编者按7月底,西班牙北非飞地休达发生了一场震动欧洲的边境风波。七万名摩洛哥年轻人在社交媒体的信息鼓动...
上海汇正财经顾问有限公司:供给...   近期国内稀土行业供需格局改善,行业景气度重回上行通道。上海汇正财经顾问有限公司分析表示,当前稀土...
青海拉面告别“兰州拉面”,借来... 澎湃新闻主笔 沈彬近日,“兰州拉面”店招纷纷改换为“青海拉面”,成为了社会关注热点。今年6月,天津7...
新华时评|从“向新”“向优”读... 新华社北京8月5日电 题:从“向新”“向优”读懂中国经济韧性活力新华社记者王悦阳“我国经济呈现动能向...
2026线上商城哪家更好用?主... 选型误区:莫让“伪需求”绑架预算 在筛选平台之前,商家首先需要破除两个常见的选型误区。 误区一:功能...
AI虚拟主播难辨真假?这份AI... 你在看直播时,是不是也刷到过这样的画面?主播长相精致、表情恒定、动作流畅,商品展示得近乎完美,但总感...