Linux中定时备份数据库,docker创建的mysql数据库

1.创建脚本文件

backup.sh

#!/bin/bash
CONTAINER_NAME="tools-mysql"		# 替换为你的 MySQL 容器名称
DB_NAME="small-tools"	# 数据库名称
DB_PASSWORD="tools@0319"	# 数据库密码
BACKUP_PATH="/home/project/tools/dataBackup"	# 备份存储路径
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")	# 当前时间戳
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_PATH
# 开始备份
#/usr/bin/docker exec -it $CONTAINER_NAME /usr/bin/mysqldump  -uroot -p$DB_PASSWORD $DB_NAME >$BACKUP_PATH/$DB_NAME-$TIMESTAMP.sql;
#修正
/usr/bin/docker exec $CONTAINER_NAME mysqldump  -uroot -p$DB_PASSWORD $DB_NAME >$BACKUP_PATH/$DB_NAME-$TIMESTAMP.sql;

# 找到并删除7天前的备份文件
find "$BACKUP_PATH" -type f -mtime +7 -name "*.sql" -exec rm -f {} \;

2.测试能否运行

# sh 你的脚本文件路径
sh /home/project/tools/dataBackup/backup.sh

不报错且目录生成了sql文件就是成功了(废话)
在这里插入图片描述

3.添加定时器触发

直接敲命令

crontab -e

就会来到定时任务的编辑器,在里面添加一个定时任务,与vim编辑器操作一样
在这里插入图片描述
:wq保存退出就OK了
等待定时器触发,可以先设置每分钟执行一次做测试,示例:* * * * * sh /home/project/tools/dataBackup/backup.sh

遇到的坑

1.报错$’\r’: 未找到命令
原因:命令直接从windows 复制过来导致的,Window的换行符是CRLF格式的。
解决:使用工具转换为unix版本,我使用的是nodepad++,转换了原封不动的传回Linux中。
在这里插入图片描述
或者使用dos2unix工具

yum install dos2unix
dos2unix xxx.sh

搞定。

如果不是docker的数据库,改一下脚本命令就OK了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值