Navicat中需在数据库节点下展开“备份”列表,右键备份文件→“属性”查看创建时间(精确到秒)以定位指定时间的.psc文件;若文件未显示,则需手动浏览备份路径(如Documents/Navicat/Backup)并用“还原备份”临时加载。
Navicat 里怎么找到并选中指定时间的备份文件
navicat 不会自动按“版本”或“时间点”给备份文件打标签,它只记录备份创建时间(精确到秒),但不提供类似 git 的语义化版本名。你看到的 .psc 文件名通常是随机字符串或带时间戳的命名,比如 backup_202607151422.psc —— 这个就是你唯一能依赖的“版本标识”。
实操建议:
- 在 Navicat 左侧对象列表中展开目标数据库 → 展开
备份节点,所有本地已注册的备份都会列在这里;右键任一备份 → “属性”可查看“创建时间”和“大小”,这是判断是否为“指定版本”的主要依据 - 如果备份是用“备份策略”自动生成的,且你设置了“保留最近 N 个”,旧备份可能已被自动清理,此时需确认
备份路径是否仍存有对应文件(默认路径通常在~/Documents/Navicat/Backup或 Windows 的%APPDATA%\PremiumSoft\Navicat\Backup) - 若备份文件不在对象列表中(例如从别处拷贝来的
.psc),右键空白处 → “还原备份” → 手动浏览选择,Navicat 会临时加载该文件元信息,但不会将其注册进当前数据库的备份列表
还原时如何避免覆盖当前数据
直接点击“还原备份”默认行为是**覆盖当前数据库中的同名对象**,不是新建库、也不是做差异合并。如果你只是想验证某个旧版本的数据内容,而不是替换线上库,这一步极易误操作。
安全做法:
- 先新建一个空数据库(如
mydb_restore_20260715),再右键该新库 → “还原备份”,这样还原结果完全隔离,不影响原库 - 还原前务必勾选“对象选择”选项卡,取消勾选你不关心的表(比如日志表、临时表),尤其当备份包含大量历史数据时,跳过它们能显著缩短还原时间
- MySQL 场景下注意:若备份含
DROP TABLE语句(Navicat 默认启用),而你又选了“覆盖现有表”,还原会先删表再重建——哪怕目标库中该表结构已有改动,也会被强行重置
SQL Server 或 PostgreSQL 用户要注意事务日志备份的特殊性
Navicat for SQL Server / PostgreSQL 支持基于事务日志的点时间恢复(PITR),但前提是:你用的是 .trn(SQL Server)或 .backup(PostgreSQL WAL 归档)这类日志备份,而不是普通全量 .psc。普通 .psc 备份不支持“还原到某时刻”。
关键区别:
-
可能最新的:仅适用于事务日志链完整时,还原到最后一个已提交事务,不指定具体时间 -
特定时间:必须确保该时间点之前的所有日志备份都存在且连续,缺一个就失败;Navicat 会报错无法定位恢复点 - 还原前必须先还原一个完整数据库备份(.psc 或 .bak),再依次应用日志备份——Navicat 的 UI 会引导你分两步操作,不能跳过第一步
为什么还原后某些表没数据?常见原因
不是所有备份都默认包含全部内容。Navicat 在创建备份时允许精细控制范围,而这个设置会直接影响还原结果。
排查方向:
- 检查原始备份的“常规”属性页:是否勾选了“结构”但没勾选“数据”?这种备份还原后只有空表
- 是否启用了“仅备份更改过的表”(增量备份模式)?那它只会包含上次备份以来有 DML 变更的表,其他表会被跳过
- MySQL 中若备份时勾选了“忽略视图/存储过程”,还原时这些对象就不会出现,也不会报错,容易被忽略
- 还原时若目标库字符集与备份时不一致(比如备份是
utf8mb4,目标库是latin1),部分字段可能因转换失败而留空,Navicat 日志里会显示Warning: Incorrect string value
最常被忽略的一点:Navicat 的备份注册机制是“按数据库实例绑定”的。换一台电脑、重装 Navicat、甚至切换用户登录,原来注册的备份列表就消失了——你得手动重新添加或靠文件路径找回 .psc,否则根本看不到那个“指定版本”。











