插件窝 干货文章 Linux每天自动备份mysql数据库怎么实现

Linux每天自动备份mysql数据库怎么实现

备份 BACKUP MySQL DATE 979    来源:    2025-04-23

Linux下实现MySQL数据库每日自动备份方案

方案概述

在Linux系统中,可以通过编写备份脚本并结合cron定时任务来实现MySQL数据库的每日自动备份。以下是详细实现步骤:

方法一:使用mysqldump命令

1. 创建备份脚本

#!/bin/bash

# 配置参数
DB_USER="your_username"       # MySQL用户名
DB_PASS="your_password"       # MySQL密码
DB_NAME="your_database"       # 要备份的数据库名,或用--all-databases备份所有
BACKUP_DIR="/path/to/backup"  # 备份文件存储目录
DATE=$(date +%Y%m%d_%H%M%S)   # 当前日期时间
KEEP_DAYS=7                   # 保留最近几天的备份

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 执行备份
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql

# 压缩备份文件
gzip $BACKUP_DIR/${DB_NAME}_${DATE}.sql

# 删除旧备份
find $BACKUP_DIR -name "${DB_NAME}_*.sql.gz" -type f -mtime +$KEEP_DAYS -delete

2. 设置脚本权限

chmod +x /path/to/your/backup_script.sh

3. 配置cron定时任务

编辑cron表:

crontab -e

添加以下内容(每天凌晨2点执行):

0 2 * * * /path/to/your/backup_script.sh

方法二:使用mysqlbackup工具(企业版MySQL)

如果是MySQL企业版用户,可以使用mysqlbackup工具:

#!/bin/bash

BACKUP_DIR="/path/to/backup"
DATE=$(date +%Y%m%d_%H%M%S)

mysqlbackup --user=root --password=your_password --backup-dir=$BACKUP_DIR/$DATE backup

安全建议

  1. 保护密码安全

    • 不要在脚本中直接存储密码,可以使用MySQL配置文件或选项文件
    • 创建只读权限的MySQL备份专用用户
  2. 加密备份

    mysqldump -u user -p database | gzip | openssl enc -aes-256-cbc -salt -out backup.sql.gz.enc
    
  3. 远程备份: 考虑将备份文件自动传输到远程服务器或云存储

恢复数据库

如果需要从备份恢复:

# 解压(如果是压缩的)
gzip -d backup.sql.gz

# 恢复
mysql -u username -p database_name < backup.sql

日志记录

建议在脚本中添加日志记录功能:

LOG_FILE="/var/log/mysql_backup.log"

echo "[$(date)] Starting backup..." >> $LOG_FILE
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql 2>> $LOG_FILE
echo "[$(date)] Backup completed" >> $LOG_FILE

以上方案可以根据实际需求进行调整,如备份频率、保留策略等。