Linux Shell 定时备份数据库

目的:容灾

最终效果:1. 每天凌晨2:30备份数据库(/data/backup/db/dbname/20210727-023000.sql.gz)

                  2. 删除5天前备份(Linux Shell)

#1. 创建备份目录
mkdir /data/backup/db
#2. 创建脚本
vim /sbin/mysql_db_backup.sh
#!bin/bash
#mysql配置信息
NOW=$(date +%Y%m%d-%H%M%S)
MYSQL_USER="root"
MYSQL_PWD="root"
MYSQL_HOST="localhost"
MYSQL_DUMP_DB="dbname"
MYSQL_CONN="mysql -u$MYSQL_USER -p$MYSQL_PWD --host $MYSQL_HOST"
MYSQL_DUMP="mysqldump $MYSQL_CONN --databases $MYSQL_DUMP_DB"
BACKUP_DIR="/data/backup/db/$MYSQL_DUMP_DB"

#若不存在备份目录则创建
[ ! -d "${BACKUP_DIR}" ] && mkdir "${BACKUP_DIR}"

#备份数据库
${MYSQL_DUMP} | gzip > "${BACKUP_DIR}/${NOW}.sql.gz"
echo "BACKUP ${BACKUP_DIR}/${NOW}.sql.gz $?"

#删除5天前备份
find ${BACKUP_DIR} -ctime +5 -name "*.gz" -exec rm -rf {} \;
#编辑任务调度文本
crontab -e
#每天凌晨2:30定时调用备份脚本
30 2 * * * sh /usr/sbin/mysql_db_backup.sh
备份脚本中个别指令解释
指令说明
find

-ctime N

  -N       N天以内创建的文件。

  +N      N 天以外创建的文件。

  N        正好N天创建的文件

-name PATTERN 使用正则匹配查找文件

        * 通配符

-exec COMMAND 找到文件后执行COMMAND指令

        rm -rf 删除        {} 查询结果        \; 结束符       

$?

1. 获取上一个命令的退出状态(即执行结果)

        成功返回 0

        失败返回 1

2. 或返回上一个函数的返回值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值