网站迁移时数据库导出导入的完整步骤与注意事项

网站迁移中数据库导出导入是关键环节,本文提供从备份到验证的完整步骤,并指出常见误区与注意事项。

网站迁移时数据库导出导入的完整步骤与注意事项
封面图:ZuCDN · ZuCDN 原创

网站迁移时,数据库的导出导入是决定成败的关键环节。无论是更换服务器、升级系统,还是从虚拟主机迁到云服务器,数据库迁移的失误都可能导致数据丢失或网站无法运行。本文将以典型场景串联步骤,为你梳理从备份到验证的完整流程,并指出常见的误区。

场景一:从旧服务器导出数据库

假设你正在将网站从旧主机迁移到新主机,第一步是备份并导出数据库。不同数据库系统导出方式不同,但核心原则一致:确保导出文件完整且包含所有必要数据。

MySQL/MariaDB 导出

使用 mysqldump 命令是常见做法。例如:

mysqldump -u 用户名 -p 数据库名 > backup.sql

执行后会生成 SQL 文件。注意:如果数据库较大,应使用 --single-transaction 选项(InnoDB)以避免锁表,同时可考虑压缩文件以节省空间。

PostgreSQL 导出

PostgreSQL 官方文档推荐使用 pg_dumppg_dumpall。对于单个数据库,pg_dump 足够;若需全局对象(如用户、表空间),则用 pg_dumpall。例如:

pg_dump -U 用户名 -d 数据库名 -f backup.sql

导出后应检查文件大小和内容,确保非空且无错误提示。

Redis 等 NoSQL 导出

对于 Redis,官方文档建议使用 BGSAVE 生成 RDB 快照,或使用 MIGRATE 命令在线迁移。导出后需确保快照文件完整,并注意版本兼容性。

场景二:将导出文件传输到新服务器

导出的文件需要安全传输到新服务器。使用 scprsync 是常见方式,但需注意权限和加密。传输过程中可能因网络中断导致文件损坏,因此传输后应校验文件哈希(如 MD5 或 SHA256)。

场景三:在新服务器上导入数据库

导入前,先确认新服务器的数据库版本和字符集与旧环境兼容。例如,MySQL 5.7 导出的文件导入到 MySQL 8.0 可能遇到语法差异,需提前测试。

MySQL 导入

mysql -u 用户名 -p 数据库名 < backup.sql

导入过程中可能出现权限或外键错误,建议先禁用外键检查:

SET FOREIGN_KEY_CHECKS=0;

PostgreSQL 导入

psql -U 用户名 -d 数据库名 -f backup.sql

若导入报错,可查看日志定位问题,必要时调整 search_path 或权限。

Redis 导入

将 RDB 文件放到 Redis 数据目录,重启服务即可加载。但需注意 Redis 版本兼容性,官方文档建议使用相同或更高版本。

场景四:验证迁移结果

导入完成后,必须验证数据完整性。检查表数量、记录数是否一致,随机抽查关键数据。同时测试网站功能,确保数据库连接正常。AWS 可靠性指南强调,应验证备份的可恢复性,而不仅仅是创建备份。

常见误区与注意事项

  • 忽略字符集:导出导入时未指定字符集,导致中文乱码。应统一使用 UTF-8。
  • 忘记用户与权限:仅迁移数据,未迁移数据库用户和权限,导致连接失败。需单独处理。
  • 版本不兼容:不同版本数据库的默认设置和语法可能变化,务必测试兼容性。
  • 不验证备份:从未实际恢复过备份,迁移时才发现备份损坏。应定期演练恢复流程。
  • 导入时锁表:导入大文件时未优化配置,导致超时或内存不足。可调整 max_allowed_packet 等参数。

参考资料

延伸阅读