网站数据库备份和恢复(以MySQL为例)

还未经验证,测试前请先打快照

1. 命令行备份与恢复

备份数据库

# 备份单个数据库
mysqldump -u [用户名] -p[密码] [数据库名称] > backup_$(date +%Y%m%d_%H%M%S).sql
  • 解释
    • mysqldump:MySQL提供的命令行工具,用于导出数据库内容为SQL文件。
    • -u [用户名]:指定连接数据库的用户名,替换为实际用户名。
    • -p[密码]:指定用户密码,替换为实际密码(运行时会提示输入,避免明文存储)。
    • [数据库名称]:要备份的数据库名称。
    • >:将mysqldump输出重定向到文件。
    • backup_$(date +%Y%m%d_%H%M%S).sql:输出文件名,$(date +%Y%m%d_%H%M%S)生成时间戳(如20250714_143022),确保文件名唯一,文件以.sql结尾。
# 备份所有数据库
mysqldump -u [用户名] -p[密码] --all-databases > full_backup_$(date +%Y%m%d_%H%M%S).sql
  • 解释
    • 与上类似,但添加--all-databases选项,备份服务器上所有数据库。
    • 输出文件名前缀为full_backup_,以区分单数据库备份。
# 压缩备份文件
mysqldump -u [用户名] -p[密码] [数据库名称] | gzip > backup_$(date +%Y%m%d_%H%M%S).sql.gz
  • 解释
    • |:管道符号,将mysqldump输出传递给下一个命令。
    • gzip:压缩工具,将SQL文件压缩为.gz格式,减小文件大小。
    • > backup_$(date +%Y%m%d_%H%M%S).sql.gz:输出压缩后的文件,文件名以.sql.gz结尾。

恢复数据库

# 恢复未压缩的备份
mysql -u [用户名] -p[密码] [数据库名称] < backup.sql
  • 解释
    • mysql:MySQL客户端命令,用于执行SQL语句。
    • -u [用户名] -p[密码]:指定用户名和密码。
    • [数据库名称]:目标数据库,必须已存在。
    • <:从指定文件(backup.sql)读取SQL语句并执行,恢复数据库内容。
# 恢复压缩的备份
gunzip < backup.sql.gz | mysql -u [用户名] -p[密码] [数据库名称]
  • 解释
    • gunzip:解压.gz文件的工具。
    • < backup.sql.gz:从压缩文件读取数据。
    • |:将解压后的SQL内容传递给mysql命令。
    • mysql -u [用户名] -p[密码] [数据库名称]:执行SQL语句,恢复到指定数据库。
# 创建新数据库并恢复
mysql -u [用户名] -p[密码] -e "CREATE DATABASE 新数据库名称;"
mysql -u [用户名] -p[密码] 新数据库名称 < backup.sql
  • 解释
    • 第一行:mysql -e "CREATE DATABASE 新数据库名称;"使用-e执行SQL语句,创建新数据库新数据库名称(替换为实际名称)。
    • 第二行:将备份文件内容恢复到新建的数据库新数据库名称

2. 客户端工具备份与恢复

请先按照NavicatPremium17的安装和破解教程安装Navicat专业版(NavicatPremium17),否则无法使用备份功能。

NavicatPremium17的安装和破解 · GitBook

首先我们知道Navicat备份的数据库文件为XX.psc文件,当然也可以备份成XX.sql文件,下面我们以常用的XX.psc文件为例。来详细操作数据库的备份。

备份数据库 1.打开Navicat软件,建立数据库连接。

2.选择数据库,点击新建备份。

image

3.写入注释,点击开始,创建数据库备份

image

4.等待备份完成

image

5.将备份文件复制出来保存。

image

还原数据库 1.打开Navicat软件,连接你要恢复的数据库服务器 ,建立连接。(如果是同一台服务器直接在原来的连接上操作就行,不用新建)

image

2.新建数据库

image

3.输入数据库名称、字符集(可以不写)、排序规则(可以不写),点击确定

image

4.选择数据库,点击备份、还原备份

直接在备份界面的空白处右键选这个 image

5.选择备份文件,点击打开(我这边是把备份文件放在了桌面)

image

6.点击开始,就开始还原备份。还原备份前确认原新建数据库没有需要的文件,不然会被覆盖。

image image image

7.还原备份成功,点击关闭。

ps:有时看似还原成功了,但是部分表没有还原成功或者表里面数据不全。可能是数据库版本问题或者其他问题,这时需要针对性去解决。

3. 自动备份脚本

#!/bin/bash
# 文件名: auto_backup.sh

# 数据库配置
DB_USER="数据库用户名"
DB_PASS="数据库密码"
DB_NAME="需要备份数据库名称"
BACKUP_DIR="/backup/mysql"
RETENTION_DAYS=7

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份文件名(包含时间戳)
BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql.gz"

# 执行备份
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_FILE

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "备份成功: $BACKUP_FILE"
else
    echo "备份失败!" >&2
    exit 1
fi

# 清理旧备份
find $BACKUP_DIR -name "backup_*.sql.gz" -mtime +$RETENTION_DAYS -delete
配置Cron定时任务

编辑crontab:

vim /etc/crontab

添加以下行,每天凌晨2点执行备份:

0 2 * * * root /root/shell/auto_backup.sh >> /root/shell/backup.log 2>&1
梦葉樱 all right reserved,powered by Gitbook该文件最后修改时间: 2025-07-21 12:54:03

results matching ""

    No results matching ""