Mysql的备份及恢复
1. 创建备份脚本
mkdir -p /home/backup
cd /home/backup
vim mysql_backup.sh
#!/bin/bash
# 配置参数
DB_USER="your_username"
DB_PASSWORD="your_password"
DB_HOST="localhost"
BACKUP_DIR="/home/backup/db"
DATE=$(date +"%Y%m%d_%H%M%S")
DAYS_TO_KEEP=7 # 保留最近7天的备份
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
# 注意:--all-databases 备份所有库。(-p后面不需要空格)如果想备份单个库,用 -B database_name1 database_name2 表示备份会创建数据库,恢复时不需要再创建
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASSWORD --all-databases --single-transaction --quick | gzip > "$BACKUP_DIR/full_backup_$DATE.sql.gz"
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "[$DATE] MySQL备份成功: $BACKUP_DIR/full_backup_$DATE.sql.gz"
else
echo "[$DATE] MySQL备份失败!" >&2
exit 1
fi
# 删除旧备份
find $BACKUP_DIR -name "full_backup_*.sql.gz" -mtime +$DAYS_TO_KEEP -delete2. 设置脚本可执行权限
chmod +x /home/backup/mysql_backup.sh
3. 配置 Cron 任务实现自动化
使用 crontab -e 命令编辑定时任务。
# 每天凌晨2点执行备份
0 2 * * * /home/backup/mysql_backup.sh
# 或者,每6小时执行一次备份
# 0 */6 * * * /home/backup/mysql_backup.shCron 时间表达式说明:分钟 小时 日 月 星期 命令
0 2 * * *表示:每天第2个小时的第0分钟(即每天凌晨2:00)。
4.恢复数据库
gunzip < full_backup_20251114_173701.sql.gz | mysql -u your_username -p database_name
# 方法 1:先解压再导入(可以修改里面的use database_name恢复到新的数据库中)
gunzip -c full_backup_20251114_173701.sql.gz > backup.sql
mysql -u root -p new_database_name< backup.sql
5.查询邮件信息
cat /var/spool/mail/root
# 强制删除文件
rm -f locked_file.txt
# 强制删除目录及其所有内容
rm -rf directory_name
# 强制删除当前目录所有内容(危险!)
rm -rf *6.用binlog + 备份恢复到具体的某个时间点(比如从2点的完整备份恢复到3点)
使用 mysqlbinlog 提取指定时间范围内的 binlog
mysqlbinlog --start-datetime="2026-01-01 02:00:00" --stop-datetime="2026-01-01 03:00:00" /var/lib/m
ysql/binlog.000015 > restore_to_point.sql
将 binlog 应用到数据库
mysql -u root -p < restore_to_point.sql
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 秦叶知AI
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
音乐天地