一个自动备份MySQL的脚本

后台开发以及运维的同学,对于MySQL备份肯定不会陌生了,对于线上的数据库定时备份是必须要有的,而且这个过程一般都是自动的,本文将介绍一个shell脚本,它的功能是自动备份MySQL以及自动清除过期备份数据

备份脚本

下面就是自动备份 MySQL 的脚本的内容



#db用户名
dbuser=root
#db密码
dbpasswd="123456"
#ip地址
dbip=127.0.0.1
#备份的数据库名字前缀
pre_name="test"


#备份操作的日志文件
bakfile=/data/sqlbak/log.txt
#备份数据的目录
bakdatadir=/data/sqlbak/bakdata
#备份数据的目录-持久化备份
persist_path=/data/sqlbak/persistdata

#备份保存时间,单位: 天
dateoutday=15


#备份单个数据库
bak_single()
{
        #db name
        sdb=$1

        #日期字符串
        datestr=$2

        echo "bak_single ${sdb}_${datestr}.sql.gz BEGIN..." >> ${bakfile}
        #备份
        mysqldump -u${dbuser} -h ${dbip} -p${dbpasswd} --single-transaction  --no-create-db -R -C -B ${sdb} > ${sdb}_${datestr}.sql
        #注释掉sql脚本中 USE DATABASE 语句
        sed -i "s/USE/-- USE/" ${sdb}_${datestr}.sql
        #压缩
        gzip ${sdb}_${datestr}.sql
        #记录日志
        echo "bak_single ${sdb}_${datestr}.sql.gz  COMPLETE..." >> ${bakfile}
}

#备份所有数据库
bak_all()
{
        #日期字符串
        all_datestr=$(date "+%Y_%m_%d_%H_%M_%S")
        #
        date_dir=$(date "+%Y%m%d")
        #
        echo "bak_all begin ${all_datestr} ====================" >> ${bakfile}
        #所有的数据库
        alldb=`mysql -u${dbuser} -h ${dbip} -p${dbpasswd} -e "show databases"`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值