Centos7定时备份MySQL数据库
步骤一:创建数据库备份脚本
-
创建数据库密码文件 (例如
my.password
):使用-u -p参数会提示不安全(命令执行记录会明文显示账号密码),因此需要建立此文件
[client]
user=root
password=123456
- 创建备份脚本 (例如
backup_mysql.sh
):
#!/bin/bash
# MySQL数据库连接信息
DB_NAME="test"
# 备份保存路径和文件名
BACKUP_DIR="/home/BACK/SQL"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/backup-$DATE.sql.gz"
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 使用mysqldump命令备份数据库,并压缩备份文件
mysqldump --defaults-extra-file=/home/BACK/sh/my.password $DB_NAME | gzip > $BACKUP_FILE
# 清理旧备份,保留最近的几个备份文件(保留一个月的备份)
find $BACKUP_DIR -name "backup-*.sql.gz" -mtime +30 -exec rm {} \;
-
设置定时任务
编辑 crontab :
crontab -e
- 添加定时任务 ,例如每天凌晨执行备份:
0 0 * * * /bin/bash /path/to/backup_mysql.sh
这将在每天的午夜 0 点(即凌晨)执行 backup_mysql.sh
脚本。
-
设置文件权限
确保数据库密码文件 (my.password
)只有合适的权限,例如:
chmod 600 /path/to/password/my.password.txt
这样做可以确保只有脚本本身能够读取这个文件,提高安全性。
注意事项:
- 密码文件安全性 :密码文件应该只能被允许访问备份脚本的用户和管理员读取。使用
chmod
命令确保文件权限设置正确。 - 备份周期 :定期清理旧的备份文件以节省存储空间。在脚本中使用
find
命令可以轻松地删除早于30天的备份文件。 - 日志记录 :可以将脚本输出重定向到日志文件以便后续检查和故障排除。

0 评论