发布时间:2026-10-31 13: 27: 00
数据库改表之前留一份备份,换服务器时把数据恢复过去,这些操作在Navicat里都能完成。不过,备份文件生成了,不代表里面包含全部所需内容;恢复进度走完,也可能有部分语句执行失败。还有一种情况是拿着SQL文件进入备份还原窗口,入口就选错了。下面以Windows中文版Navicat连接MySQL为例,说明备份、恢复及失败后的处理方法。
一、Navicat怎么备份和恢复数据库
Navicat内置备份与SQL转储是两种方式,恢复时应使用对应入口。操作前核对连接地址和数据库名称,恢复测试尽量放在独立数据库中完成。
1、创建内置备份
内置备份可以选择表、视图等对象。业务还在写入时,备份的一致性也要考虑,不能只看任务有没有报错。
①双击打开目标【数据库】,点击工具栏【备份】→【新建备份】。
②进入【对象选择】,勾选需要保存的表及其他数据库对象。
③在【高级】中核对备份选项,全部为InnoDB表时,可按备份要求选择【使用单一事务】。
④点击【备份】,检查执行信息,并在备份列表中确认生成的文件。
2、把备份恢复到测试库
①右键点击目标【连接】,选择【新建数据库】,填写测试库名称,设置与源库对应的【字符集】和【排序规则】。
②打开测试库并点击【备份】,在列表空白处右键选择【还原备份从】,定位备份文件。
③在【常规】中核对目标库及文件信息,在【对象选择】中确认恢复范围。
④检查【高级】中的创建、清空及覆盖选项,确认后点击【开始】。
恢复可能删除、重建或清空选中的对象,具体取决于恢复选项。已有业务数据的数据库不宜直接拿来试验。备份列表没有显示文件,也不等于文件失效,可以通过指定文件的入口载入。
3、使用SQL文件备份和恢复
①右键点击已打开的【数据库】,选择【转储SQL文件】→【结构和数据】,指定文件名并保存。
②用文本编辑器打开【.sql文件】,检查其中的【CREATE DATABASE】、【USE】及删除对象语句。
③右键点击准备好的测试【数据库】,选择【运行SQL文件】,指定文件和对应【编码】。
④排查阶段取消勾选【遇到错误时继续】,点击【开始】并查看执行信息。
SQL文件可能自行指定数据库,执行目标不能只凭左侧选中了哪个库判断。仅结构转储不包含表记录,CSV、Excel导出也不能替代包含建表信息的数据库备份。
二、Navicat数据库恢复失败怎么办
恢复失败后应保留原备份和执行信息,暂时停止重复提交。同一个任务连续运行,可能让原本的权限或语法问题,又叠加出表已存在、主键重复等报错。
1、从靠前的错误开始核查
①在恢复窗口的【信息日志】或执行信息区域,复制错误码、对象名称和相关语句。
②对照文件类型,将【Navicat备份文件】交给备份还原入口,将【.sql文件】交给【运行SQL文件】。
③展开测试库的【表】、【视图】等分类,查看失败前已经创建的对象。
后续提示表不存在,可能只是建表失败带来的连带结果。应优先处理日志中靠前的有效错误。失败任务也未必整体回滚,重试时可以另建空测试库,避免把残留对象混入判断。
2、检查账号权限和对象定义者
能够连接数据库、查看记录,不代表账号可以建表、删除对象或创建触发器。涉及视图和存储程序时,还可能遇到定义者账号相关限制。
①点击【新建查询】,输入【SHOW GRANTS FOR CURRENT_USER;】,点击【运行】查看当前账号授权。
②对照日志,核查【CREATE】、【INSERT】、【DROP】及报错对象所需的权限。
③在SQL副本中搜索【DEFINER】,记录涉及的账号和对象,交由数据库管理人员确认授权或定义者调整方案。
3、处理版本、字符集和排序规则差异
①分别在源库和目标库的【新建查询】中运行【SELECT VERSION();】,记录数据库版本。
②出现未知排序规则时,在目标库运行【SHOW COLLATION;】,核对报错名称是否受支持。
③涉及具体表时,通过【设计表】检查字符集、排序规则及字段定义,并与源库比较。
④在【SQL文件副本】中调整确认不兼容的定义,放入新的测试库重新执行。
较新数据库输出的排序规则,较早版本可能不认识。只改目标库的默认设置,未必能覆盖脚本中逐表指定的定义。排序规则变化还可能影响比较和排序结果,不宜把脚本中的名称全部替换后就直接投入使用。
4、区分大语句限制与连接中断
①出现数据包过大提示时,在【新建查询】中运行【SHOW VARIABLES LIKE'max_allowed_packet';】。
②记录失败语句涉及的【表】和大字段,由有权限的人员核对服务端限制,并重新连接后测试。
③只有连接中断提示时,检查服务器运行日志、连接链路及磁盘空间,再决定是否重试。
文件大和单条语句过大是两回事。单条插入语句超过限制时,可能伴随连接断开;服务器重启或连接超时也会中断任务,不能看到断开提示就一律增大参数。
三、Navicat怎样确认恢复结果完整可用
看到表名重新出现,只能说明部分对象已经建立。恢复检查还要覆盖记录、约束和业务查询,尤其是曾经报错的对象。
1、对照备份时点检查数据
①刷新目标【数据库】,对照备份对象清单检查【表】、【视图】、【函数】和【事件】等内容。
②在【新建查询】中,对关键表运行【SELECT COUNT(*)FROM表名;】,与备份时记录的数量比较。
③按业务编号查询样本记录,核对金额、日期、中文和空值字段。
④通过【设计表】检查关键表的【主键】、【索引】和【外键】。
源库仍在持续写入时,当前行数可能已经变化,应对照备份时点留下的记录。数量相同也不能证明每个字段都正确,长文本、特殊字符及关联记录值得单独抽查。
2、保留可重复检查的备份材料
备份的范围需要说清楚。数据库对象备份通常不包含Navicat中单独保存的查询文件,恢复后查询列表为空,不能直接判断业务数据丢失。
①右键点击【连接】,选择【编辑连接】→【高级】,查看【设置位置】。
②将需要保留的【.sql查询文件】另行复制保存,与数据库备份分开标注。
③保存本次【恢复日志】和对象核对记录,注明备份时间、源库版本及测试结果。
总结
数据库备份的用途,是在发生误操作或环境变化后,仍有一份经过验证的数据可用。备份范围、保存时点和恢复条件写得清楚,后续接手的人也更容易判断这份文件能恢复到什么状态。日常可以安排独立测试库做恢复验证,别等业务急着用数据时才发现遗漏。希望这些内容能帮大家理清备份与恢复的关系,如有相关需求,欢迎沟通咨询。
展开阅读全文
︾