数据是一个比较重要的数据,经常需要备份,每次都手动比较麻烦。本脚本主要现实在CentOS中实现对MySQL数据库的备份和保留最近十五天的备份文件。避免太多无用陈旧的备份占用空间。#!/bin/bash
id="root" #用户名
pwd="123123" #密码
dbs="conedu commlib" #数据库名字的列表,多个数据库用空格分开。
backuppath="/root/mysqlbackup" #保存备份的位置
day=15 #保留最近几天的备份
[ ! -d $backpath ] &&mkdir -p $backuppath #判断备份目录是否存在,不存时新建目录。
cd $backuppath #转到备份目录,这句话可以省略。可以直接将路径到命令的也行。backupname=mysql_$(date +%Y-%m-%d) #生成备份文件的名字的前缀,不带后缀。
for db in $dbs; #dbs是一个数据名字的集合。遍历所有的数据。
do
mysqldump -u$id -p$pwd -S /var/lib/mysql/mysql.sock $db >$backupname_$db.sql #备份单个数据为.sql文件。放到当前位置
if [ "$?" == "0" ] #$? 得到上一个shell命令的执行的返回值。0表示执行成功。其他表示错误。并将将结果写入到日志中。
then
echo $(date +%Y-%m-%d)" $db mysqldump sucess">>mysql.log
else
echo $(date +%Y-%m-%d)" $db mysql dump failed">>mysql.log
exit 0
fi
done
tar -czf $backupname.tar.gz *.sql #压缩所有sql文件
if [ "$?" == "0" ]
then
echo $(date +%Y-%m-%d)" tar sucess">>mysql.log
else
echo $(date +%Y-%m-%d)" tar failed">>mysql.log
exit 0
fi
rm -f *.sql #删除所有的sql文件
delname=mysql_$(date -d "$day day ago" +%Y-%m-%d).tar.gz #得到要删除的太旧的备份的名字。
rm -f $delname #删除文件。只要在 /etc/crontab中添加一行,就可以在指定时间,自动备份了。更多CentOS相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14Oracle 基于 RMAN 的不完全恢复(incomplete recovery by RMAN)MySQL配置my.cnf调优项详解相关资讯 MYSQL备份
- MySQL生产库之Xtrabackup物理备份 (今 08:17)
- 线上MySQL备份脚本 (07月28日)
- MySQL备份的三种方法 (07月05日)
| - MySQL备份之mydumper入门学习 (08月22日)
- MySQL备份之分库分表备份脚本 (07月28日)
- MySQL之备份和恢复(msyqldump、 (06月20日)
|
本文评论 查看全部评论 (0)