linux定时备份数据库脚本

创建脚本

  • 创建脚本 (意思在文件中有备注)
vim dbName.sh 
  • vim 使用
    i 插入
    : 输入命令
#!/bin/bash
 
#备份目录
BACKUP=/home/mysqlBackup/db_name
#获取当前时间
DATATIME=$(date +'%Y-%m-%d_%H%M%S')
#打印时间
echo $DATATIME
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=123456
#备份数据库名
DATABASE=db_name

#创建备份目录,如果不存在就创建
[ ! -d "${BACKUP}/${DATATIME}/${DATATIME}" ] && mkdir -p "${BACKUP}/${DATATIME}"

#备份数据库
mysqldump -u${DB_USER} -p${DB_PW}  --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATABASE.sql.gz
# 备份表结构
mysqldump -u${DB_USER} -p${DB_PW}  --host=${HOST} -q -d -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATABASE.sql.gz
#将文件处理成tar.gz
cd ${BACKUP}
tar -zcvf $DATABASE.tar.gz ${DATATIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATATIME}

#删除10天前的备份文件
find ${BACKUP} -atime +30 -name "+.tar.gz" -exec rm -rf {} \;
echo "备份数据库${DATABASE} 成功~"

导出内容(表结构等)

内容含义
- - databases在备份的时候先是会创建表的,也就是说备份了整个db_name的 如果不加–databses的话,表明只是备份db_name中的数据表,而在还原的时候不会在创建db_name这个数据库,只是还原hellodb中的数据表而已
-q不缓冲查询,直接导出至标准输出
-d只导出表结构,不含数据
–add-locks导出过程中锁定表,完成后回解锁。-q:不缓冲查询,直接导出至标准输出

设置定时

  • 输入命令 crontab -e / 路径地址
1.用数值表示 时间信息
00 02 *  *  *  备份文件

2.利用特殊符号表示时间信息
*     *    *   *    *   备份文件
/分钟 /小时 ///=========================================
PS:定时任务最短执行的周期为 每分钟 
*/5       */ 6     */3      */1    */2
每隔5分钟  每隔6小时  每隔3日  每隔1月  每隔2=========================================
其它 写法:
01-05  02  * * *2日的0102030405 执行一遍


指定不连续的时间范围:
00  14,20  *  *  *  *    每天14点,20点执行一次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值