MySQL数据库备份和还原

一、使用 mysqldump 命令备份

备份单个数据库:
mysqldump -u 用户名 -p 数据库名 > 备份文件名.sql

例如:

mysqldump -u root -p mydatabase > mydatabase_backup.sql

备份所有数据库:

mysqldump -u 用户名 -p --all-databases > 所有数据库备份.sql

备份数据库结构(不包含数据):

mysqldump -u 用户名 -p -d 数据库名 > 数据库结构.sql

二、还原数据库

方法 1:使用 mysql 命令
mysql -u 用户名 -p 数据库名 < 备份文件名.sql

方法 2:在 MySQL 交互模式中还原

mysql -u 用户名 -p

进入 MySQL 后:

use 数据库名;
source /path/to/备份文件名.sql;

三、自动化备份脚本

可以创建一个 Shell 脚本来自动备份数据库,并设置定时任务:
#!/bin/bash

# 配置信息
DB_USER="root"               # 数据库用户名
DB_PASS="your_password"      # 数据库密码
BACKUP_DIR="/path/to/backup" # 备份文件存放目录
DATE=$(date +%Y%m%d_%H%M%S)  # 当前日期时间,用于文件名

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

# 备份所有数据库
mysqldump -u $DB_USER -p$DB_PASS --all-databases > $BACKUP_DIR/all_databases_$DATE.sql

# 压缩备份文件
gzip $BACKUP_DIR/all_databases_$DATE.sql

# 删除7天前的备份文件
find $BACKUP_DIR -name "all_databases_*.sql.gz" -type f -mtime +7 -delete

echo "Backup completed: $BACKUP_DIR/all_databases_$DATE.sql.gz"

使用方法:

  1. 将脚本保存为 mysql_backup.sh
  2. 修改脚本中的配置信息
  3. 赋予执行权限:chmod +x mysql_backup.sh
  4. 添加到定时任务(每天凌晨 2 点执行):crontab -e

添加以下内容:

0 2 * * * /path/to/mysql_backup.sh

四、注意事项

  1. 备份文件应定期检查,确保可以正常还原
  2. 重要备份应存储在不同的位置,避免单点故障
  3. 对于大型数据库,考虑使用物理备份(如 xtrabackup)以提高效率
  4. 备份过程中可能会对数据库性能产生影响,建议在低峰期执行

 

posted @ 2025-08-21 09:58  以德为先  阅读(50)  评论(0)    收藏  举报