linux环境定时备份mysql数据库

业务场景

开发测试环境数据库权限完全开放给研发,数据库被误删除,同时mysql也没有开启binlog日志,就想着可不可以定时备份数据,也就是今天写这篇文章的原因

技术点

mysqldump
crontab

备份目录
# mysql备份目录
    mkdir /home/mysql
# mysql备份脚本
    mkdir /home/mysql/scripts
# mysql备份文件
    mkdir /home/mysql/files
# mysql备份日志
    mkdir /home/mysql/logs
备份脚本[backup_full.sh]
#!/bin/bash

# 备份目录
BACKUP_ROOT=/home/mysql
# 备份数据目录
BACKUP_FILEDIR=$BACKUP_ROOT/files
# 备份日志目录
BACKUP_LOGDIR=$BACKUP_ROOT/logs
# mysql账号
USER=
# mysql密码
PASSWORD=
# 备份指定数据库wedding和community
DATABASES=(wedding community)

# 当前日期
DATE=$(date +%Y%m%d)

echo "备份数据库开始 DATABASES:"${DATABASES[@]}

# 循环数据库进行备份
for db in ${DATABASES[@]}
do
echo
echo "$BACKUP_FILEDIR/${db}_$DATE.sql.gz 开始"
mysqldump -u${USER} -p${PASSWORD} --default-character-set=utf8mb4 -q --lock-all-tables --flush-logs --skip-triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
echo "$BACKUP_FILEDIR/${db}_$DATE.sql.gz 结束"
echo
done
echo "备份数据库结束"
备份只保留最近3天
#!/bin/bash

echo "清理开始"
find /home/mysql/files -mtime +3 -name "*.gz" -exec rm -rf {} \;
echo "清理结束"
crontab配置定时任务[每天凌晨3点执行备份]
00 3 * * * sh /home/mysql/scripts/backup_full.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值