完美定时整个mysql下所有库备份

赞赏 2017-05-19

刚刚过去的一周是wanncry病毒肆虐的一周,有很多人的电脑都中招了,虽然目前勒索者收到的支付并不是特别巨大,但是给人民留下的恐慌仍要持续一段时间,我们除了打补丁升级之外,最重要的其实应该养成备份的习惯!特别是重要资料和数据 ,对于一线研发的技术人员,数据备份已经是信手拈来,不过很多都是用可视化工具导出或者命令导出,或者脚本单个数据库导出。


废话不多说,直接上脚本。阿里centos6.8亲测有效

可以完成一个mysql下所有数据库的备份


#!/bin/sh
# 备份数据库
#账号密码不宜公开,建议写在/etc/my.cnf
MYSQL_USER=username
MYSQL_PASS=password
BACKUP_DIR=/opt/backup/mysql
DATA_DIR=/opt/backup/dbdata

# 查询mysql中所有数据库名字
SQL_STRING="SELECT SCHEMA_NAME AS db FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'performance_schema','test');"

DBS=$(echo $SQL_STRING | mysql -u$MYSQL_USER -p$MYSQL_PASS -Bs)

# 当前日期
DATE=$(date -d '+0 days' +%Y%m%d%H%M)
mkdir -p $DATA_DIR/${DATE}
# 打包名称
ZIP_NAME="mysql_"$DATE".gz"

# 删除3个月之前的数据库备份
find $BACKUP_DIR -name "mysql_*.gz" -type f -mtime +90 -exec rm {} \; 
echo "${ZIP_NAME} has been backup successful"
/bin/sleep 3

# 循环备份数据库
for DBNAME in $DBS
do
if [ ! -d ${DATA_DIR} ]; then
mkdir -p ${DATA_DIR}
fi
SQL_FILE=$DBNAME-$DATE".sql"
/usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS $DBNAME > $DATA_DIR/$DATE/$SQL_FILE
echo "${DBNAME} has been backup successful"
/bin/sleep 5

done


# tar打包所有sql文件
tar -czvPf $BACKUP_DIR/DATE/$ZIP_NAME $DATA_DIR/$DATE

# 打包成功后重命名sql
for TMP in `find $DATA_DIR/$DATE -name "*.sql"`
do
mv $TMP ${TMP%.*}.backup;
done



报错为mysql_backup.sh

结合crontab 就可以实现完美定时整个mysql下轮询备份

登陆后阅读全文
阅读 1582 赞赏 0 有用 4 没用 2 收藏 2 分享

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

完美定时整个mysql下所有库备份

手机扫一扫
分享文章