如何使用phpMyAdmin在主机上备份和恢复MySQL数据库

数据库是大多数网站的核心——WordPress、WooCommerce、自定义会员系统。如果数据库在没有备份的情况下丢失或损坏,后果可能是灾难性的。本指南将带您了解如何在共享虚拟主机上使用phpMyAdmin和DirectAdmin备份工具备份和恢复MySQL,无需任何命令行操作。

黄金法则:在做任何重大更改之前始终进行备份——插件更新、架构修改、PHP版本变更或网站迁移。将备份文件存放在主机账户之外的地方。

1. 为什么要备份数据库?

可能损坏或销毁数据库的常见场景:

AsiaGB每月自动备份两次(1日和15日),但这些不能替代您自己的备份。如果数据在10日丢失,您只能恢复到1日的快照——之间的所有内容都消失了。

2. 使用phpMyAdmin导出数据库

phpMyAdmin是50MB以内数据库最方便的方法。

导出步骤

  1. 登录到DirectAdmin → 进入MySQL管理 → 点击phpMyAdmin。
  2. 从左侧边栏选择数据库。
  3. 点击顶部的导出标签。
  4. 选择方式:自定义以获得更多控制。
  5. 确认所有表都已选中。
  6. 格式:SQL。
  7. 在对象创建选项下,勾选添加DROP TABLE——这可以防止在现有数据库上恢复时出错。
  8. 点击导出——.sql文件将下载到您的电脑。

您应该了解的格式和选项

当您将方式设置为自定义时,phpMyAdmin会显示直接影响备份完整性和可恢复性的选项。了解它们可以帮助您一次成功恢复而不会中途出错:

提示:如果phpMyAdmin警告文件很大,请在压缩选项下勾选"gzipped"——.sql.gz文件小70-80%,下载更快,存储更轻便。

大型数据库:如果数据库超过50MB,phpMyAdmin可能会超时。请使用DirectAdmin备份工具(见下一节),或联系支持团队进行命令行备份。

3. 使用DirectAdmin备份工具备份

DirectAdmin内置的备份工具支持大型数据库,可以一次性创建完整备份(文件+数据库)。

步骤

  1. 登录到DirectAdmin。
  2. 进入高级功能 → 创建/恢复备份。
  3. 选择MySQL数据库(以及Home Directory进行完整备份)。
  4. 点击创建备份。
  5. 等待完成——备份文件出现在您的home目录中。
  6. 通过文件管理器或FTP下载它。

⚠️ 不要将备份仅保留在您的主机账户上。如果主机服务器发生严重故障,存储在同一服务器上的备份文件也会丢失。始终将副本下载到本地电脑或云存储。

4. 使用phpMyAdmin恢复数据库

从之前导出的.sql文件恢复数据库:

创建新数据库(如需)

如果原始数据库已删除,请先在DirectAdmin → MySQL管理 → 创建数据库中创建新数据库。记录用户名和密码。

通过phpMyAdmin导入

  1. 打开phpMyAdmin → 选择目标数据库。
  2. 点击导入标签。
  3. 点击选择文件 → 选择您的.sql文件(必须小于50MB)。
  4. 格式:SQL(已默认选中)。
  5. 点击导入并等待完成。

文件大于50MB:phpMyAdmin的默认上传限制为50MB。对于更大的文件,请联系支持或使用BigDump或MySQLDumper等工具拆分.sql文件并分批导入。

5. 处理超过限制的大型备份文件

数据密集型网站——拥有数千订单的WooCommerce商店或长期运营的论坛——可能远超50MB,此时phpMyAdmin导入会失败。以下是处理方法,从最简单到最高级:

方法1 — 使用gzip导出/导入

压缩为.sql.gz可将文件大小减少70-80%,通常能将超过限制的文件带回可上传范围。phpMyAdmin可以直接导入.gz文件,无需先解压:

  1. 导出时,将压缩设置为gzipped以生成database.sql.gz。
  2. 恢复时,打开导入标签并选择.sql.gz文件——phpMyAdmin会自动解压。

方法2 — 使用BigDump拆分文件

如果文件压缩后仍然太大无法上传到phpMyAdmin,请使用BigDump脚本,它以块的方式读取.sql文件并作为小批次运行以避免超时:

  1. 通过文件管理器或FTP将.sql文件和bigdump.php上传到同一文件夹。
  2. 在bigdump.php中编辑$db_server、$db_name、$db_username和$db_password以匹配您的数据库。
  3. 在浏览器中打开bigdump.php的URL,点击开始导入——脚本将持续分批运行。
  4. 完成后,立即删除bigdump.php和.sql文件以确保安全;永远不要将它们留在公开目录中。

方法3 — 命令行mysqldump(如果您的主机允许)

如果您的主机方案包含SSH访问,从命令行使用mysqldump是处理大型数据库最快且最可靠的方法,因为它不受Web服务器限制的约束:

# Backup — export the whole database and gzip it in one command
mysqldump -u USERNAME -p --default-character-set=utf8mb4 DBNAME | gzip > backup_20260607.sql.gz

# Restore — decompress and import back
gunzip < backup_20260607.sql.gz | mysql -u USERNAME -p DBNAME

# Back up only specific tables
mysqldump -u USERNAME -p DBNAME wp_posts wp_options > partial.sql

注意:AsiaGB标准主机方案在DirectAdmin + phpMyAdmin上运行。如果您的方案不包含SSH/shell访问,请使用DirectAdmin备份工具,或提交工单,我们的团队将为您运行命令行备份——客户无需额外费用。

6. 自动备份和重要注意事项

每周手动备份很容易忘记。更可持续的方法是自动化备份,并注意可能使备份无法恢复的陷阱:

使用Cron作业安排自动备份

如果您的主机在DirectAdmin中提供Cron作业菜单,您可以安排mysqldump自动运行。以下是每天凌晨2点备份并按日期命名文件的cron条目:

# Runs daily at 02:00 — set in DirectAdmin → Cron Jobs
0 2 * * * mysqldump -u USERNAME -pPASSWORD --default-character-set=utf8mb4 DBNAME | gzip > ~/backups/db_$(date +\%Y\%m\%d).sql.gz

对于WordPress,还有更简单的方法:UpdraftPlus或WP-DBManager等插件可以安排备份并自动将文件发送到Google Drive或Dropbox,减少将备份保存在同一服务器上的风险。

注意:utf8mb4字符集

这是泰语或表情符号字符在恢复后变成???或乱码的首要原因。确保导出时的字符集、.sql文件和目标数据库都是utf8mb4。如果您以latin1导出并导入到utf8mb4,字符可能被永久损坏且很难恢复——所以从导出步骤开始选择utf8mb4。

注意:外键和表顺序

具有外键约束的数据库(例如引用customers的orders表)如果orders在customers存在之前导入,可能会恢复失败,触发无法添加或更新子行。处理方法:

⚠️ 始终测试您的恢复:从未恢复过的备份是您无法信任的备份。每月至少尝试将备份文件导入测试数据库(例如创建名为user_test的数据库)一次,以确认文件在紧急情况下确实能恢复。

7. AsiaGB自动备份政策

项目详情
频率每月两次(每月1日和15日)
保留期1年
覆盖范围所有文件 + MySQL数据库
如何恢复提交支持工单,说明所需的备份日期
费用AsiaGB所有客户免费

8. 最佳实践

常见问题

我应该多久备份一次数据库?

这取决于您的数据更改频率。每天接受订单的新闻网站或网上商店应该每天备份,或至少每周备份。很少更新的企业网站每月备份就够了。指导性问题是:'如果我的数据回滚到上次备份点,我能接受中间发生的事情丢失吗?'如果不能,就更频繁地备份。

为什么泰语字符在恢复后变成问号?

这发生在备份文件的字符集与目标数据库不匹配时。通过在导出时选择utf8mb4作为字符集,并将目标数据库也创建为utf8mb4来防止这种情况。一旦数据损坏就很难恢复,所以在出问题之前就以正确的字符集备份。

AsiaGB已经在备份——我还需要自己备份吗?

是的。AsiaGB的自动备份每月快照两次(1日和15日)。如果数据在中间丢失,您只能恢复到最近的快照,之后创建的任何内容都消失了。在重大更改前自己备份可以填补这个空缺。

在现有数据库上恢复数据库危险吗?

导入包含DROP TABLE的文件会立即删除当前数据并用备份数据替换它。所以在恢复之前始终备份当前数据——这样,如果您正在恢复的备份出现问题,您可以回到原来的状态。

每月自动备份两次的主机服务

AsiaGB主机从500泰铢/年起,配备DirectAdmin、phpMyAdmin、自动备份和SSD存储——支持PHP 7.4、8.2和8.3。

查看主机方案