在Linux系统中实现MySQL自动备份有多种方法,下面我将介绍几种常用的方案。
#!/bin/bash
# MySQL数据库备份脚本
# 设置变量
DB_USER="your_username"
DB_PASS="your_password"
DB_NAME="your_database_name"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 使用mysqldump备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.sql
# 压缩备份文件
gzip $BACKUP_DIR/${DB_NAME}_${DATE}.sql
# 删除超过30天的备份文件
find $BACKUP_DIR -name "*.gz" -type f -mtime +30 -delete
chmod +x /path/to/backup_script.sh
crontab -e
添加以下内容(每天凌晨2点执行备份):
0 2 * * * /path/to/backup_script.sh
#!/bin/bash
DB_USER="your_username"
DB_PASS="your_password"
DB_NAME="your_database_name"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
mysqlhotcopy -u $DB_USER -p $DB_PASS $DB_NAME $BACKUP_DIR/${DB_NAME}_${DATE}
# 压缩备份目录
tar -czf $BACKUP_DIR/${DB_NAME}_${DATE}.tar.gz $BACKUP_DIR/${DB_NAME}_${DATE}
rm -rf $BACKUP_DIR/${DB_NAME}_${DATE}
# 对于Ubuntu/Debian
sudo apt-get install percona-xtrabackup
# 对于CentOS/RHEL
sudo yum install percona-xtrabackup
#!/bin/bash
DB_USER="your_username"
DB_PASS="your_password"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
innobackupex --user=$DB_USER --password=$DB_PASS $BACKUP_DIR
# 压缩最新的备份目录
LATEST=$(ls -td $BACKUP_DIR/*/ | head -n 1)
tar -czf $BACKUP_DIR/full_backup_${DATE}.tar.gz $LATEST
rm -rf $LATEST
这些是企业级备份解决方案,适合大规模数据库环境。
根据备份方式不同,恢复方法也不同:
gunzip < backupfile.sql.gz | mysql -u username -p database_name
innobackupex --copy-back /path/to/backup
选择哪种备份方案取决于您的数据库大小、停机时间要求和恢复时间目标等因素。