通过shell脚本实现MySQL备份并恢复,for in流程控制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过shell脚本实现MySQL备份并恢复,for in流程控制相关的知识,希望对你有一定的参考价值。

从3306备份数据库,还原到3307数据库上,通过shell脚本的for in流程控制实现
 
#!/bin/bash
 
my_date=`date +%Y%m%d`
my_time=`date +%H%M`
my_date_yesterday=`date +%Y%m%d --date=‘1 days ago‘`
 
echo "----------------------------------------------------"
echo "$my_date $my_time"
 
backup_dir="/data/backup3307/${my_date}"
mkdir -p ${backup_dir}
echo "db backup dir: ${backup_dir}"
 
DBS="data1 data2 data3 data4 "
for db in ${DBS}
do
echo "${db} backup start..."
echo "$my_date $my_time"
file="${backup_dir}/${db}_${my_date}.sql"
mysqldump --login-path=backup --single-transaction --set-gtid-purged=OFF --opt --triggers --routines --events ${db} > ${file}
size=`ls -lh ${file}|awk ‘{print $5}‘`
echo "size: ${size}"
echo "${db} backup end. "
echo "$my_date $my_time"
 
echo "${db} restore start..."
mysql --login-path=restore -e "CREATE DATABASE ${db}_$my_date_yesterday DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --login-path=restore "${db}_$my_date_yesterday" < ${file}
echo "${db} restore end."
echo "$my_date $my_time"
echo "gzip ${file}"
gzip ${file}
done
 
# delete old backup data
old_date=`date +%Y%m%d -d ‘5 days ago‘`
rm -rf /data/backup3307/${old_date}
 
for in循环举例:
 
#!/bin/sh
 
s="a b c "
 
for i in $s
do
echo "i is $i"
done
 
执行结果:
 
# ./for_in.sh
i is a
i is b
i is c

以上是关于通过shell脚本实现MySQL备份并恢复,for in流程控制的主要内容,如果未能解决你的问题,请参考以下文章

mysql怎么操作备份

crontab+shell脚本实现定时备份mysql数据库

使用shell脚本实现自动备份MySQL数据库

mysql数据库的备份与数据恢复

通过shell脚本实现对oracle RMAN备份集压缩并异地备份

Mysql备份恢复方案都有哪些,全备,热备该怎么做