怎么利用Navicat进行手动备份完整数据库_详细配置与操作步骤

1次阅读

navicat备份失败主因是连接类型与备份功能不匹配、关键选项未勾选、路径含特殊字符及超时配置不足;须确认连接类型、手动启用存储过程/事件/触发器/权限导出、使用纯英文无空格路径,并调大max_allowed_packet和超时参数。

备份时选错连接类型,导出会失败

navicat 里连的是 mysql 连接,但误点 postgresql 备份按钮,界面不报错,导出的文件却是空的或格式错误。本质是 navicat 的备份功能严格绑定连接类型——mysql 连接只能用 mysql dumppostgresql 连接只能用 pg_dump,不能混用。

  • 右键数据库名前,先确认左上角连接图标旁显示的是 MySQL(或你实际用的数据库类型)
  • 如果连接列表里有多个同名数据库,点开连接属性,核对 HostPortdatabase 是否匹配目标实例
  • 测试连接成功 ≠ 备份可用;务必在连接属性里点 Test Connection 后,再点 OK 保存,否则备份可能静默使用旧配置

“完整备份”不是勾一个选项就能搞定

Navicat 默认只导出表结构和数据,但所谓“完整”,通常还包括存储过程、函数、事件、触发器、用户权限等。这些默认不启用,必须手动打开。

  • 右键数据库 → Backup Database → 弹窗里勾选 Stored Procedures and FunctionsEventsTriggers
  • 权限导出要额外操作:单独右键连接 → Export SQL File → 在弹窗中切换到 Users 标签页,勾选对应用户,再导出
  • 若数据库含 DEFINER 子句(如 CREATE DEFINER=`user`@`%` PROCEDURE ...),还原时可能因用户不存在报错;建议勾选 Remove DEFINER and SQL SECURITY(在备份弹窗高级选项里)

导出路径含中文或空格,还原时大概率失败

Navicat 调用命令行工具(如 mysqldump)执行备份,而底层工具对路径中的空格、中文、特殊符号极敏感。常见现象是备份文件生成了,但大小为 0KB,或还原时报 Can't open file

  • 备份前手动指定路径,例如 D: avicat_backupsmydb_20240520.sql,避免用桌面或“我的文档”这类系统路径
  • 路径中不要出现 (、)、空格、中文、&、# 等字符
  • 如果必须用网络路径,优先用 UNC 格式(如 servershareackup),而非映射盘符(如 Z:ackup),后者在后台服务上下文中常不可见

大库备份卡住或超时,其实是内存和超时设置没调

超过 500MB 的数据库,在 Navicat GUI 里点击备份后长时间无响应,不是卡死,而是 mysqldump 进程被默认内存限制或连接超时中断。Navicat 不暴露所有参数,得靠配置文件补救。

  • 编辑 Navicat 安装目录下的 mysql.iniwindows)或 mysql.cnfmacos/linux),在 [client] 段添加:
    max_allowed_packet = 512M<br>connect_timeout = 3600<br>net_read_timeout = 3600
  • 重启 Navicat 才生效;不重启的话,即使界面上看到进度条动了,也可能中途断掉
  • 更稳妥的做法:对超大库,改用命令行直连备份(mysqldump -h host -u user -p --single-transaction --routines --events db_name > full.sql),Navicat 仅作管理入口

备份本身不难,难的是确认“完整”二字落在哪一层——是数据?结构?权限?还是跨版本兼容性?很多人导出完就以为万事大吉,结果还原时发现函数少两个、用户登不进去、时间字段全变成 0000-00-00,问题往往出在备份前没看清那几个被默认关掉的复选框。

text=ZqhQzanResources