服务器定时备份mysql、redis数据

linux服务器里,通过docker运行的mysql与redis,实现每天自动对数据进行备份。

1、编写sh脚本文件
 

#!/bin/bash

# 设置备份目录和文件名
BACKUP_DIR=/home/evenwu2024/mysql_backup
DATE=$(date +\%F)
MYSQL_BACKUP_FILE="$BACKUP_DIR/mysql_backup_$DATE.sql"
REDIS_BACKUP_FILE="$BACKUP_DIR/redis_backup_$DATE.rdb"

# 备份 MySQL
echo "开始备份 MySQL..."
docker exec mysql_container mysqldump -u root -pwhsy2022 predx_test > $MYSQL_BACKUP_FILE
echo "MySQL 备份完成:$MYSQL_BACKUP_FILE"

# 备份 Redis
echo "开始备份 Redis..."
docker exec redis_container redis-cli save
docker cp redis_container:/data/dump.rdb $REDIS_BACKUP_FILE
echo "Redis 备份完成:$REDIS_BACKUP_FILE"

# 删除超过7天的旧备份
echo "删除超过7天的旧备份..."
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -exec rm {} \;
find $BACKUP_DIR -type f -name "*.rdb" -mtime +7 -exec rm {} \;
echo "旧备份删除完成"

echo "所有备份完成"

注意,backup_dir目录的替换,container_name的替换。

2、尝试执行脚本
其实本质就是,通过docker进入容器的内部,mysql使用的是mysqldump命令进行备份sql文件,默认是表结构和数据一起备份,redis就是进入内部后执行save命令,将dump.rdb文件保存起来。

运行脚本:

执行授权命令:chmod +x /home/evenwu2024/backup_mysql.sh

可以看到运行后 已经在指定的目录下进行了备份

3、创建定时执行功能
         --使用命令:crontab -e

         --添加以下cron表达式:0 2 * * * /home/evenwu2024/backup_mysql.sh

         --前面部分是cron表达式内容,可以根据需要进行调整,我这里是每天的凌晨两点进行执行,后面部分就是脚本文件的路径

         --添加后保存crontab。使用crontab -l可验证修改成功

然后每天的凌晨两点,就会自动备份mysql和redis的数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值