如何备份和恢复 Nacos 服务注册元数据防止丢失

文章导读
对于 Nacos 服务注册元数据,最稳妥的备份方式是直接备份底层存储数据库(如 MySQL),但需注意默认临时实例重启后会丢失,无需也无法备份。Nacos 2.2+ 版本已移除嵌入式 Derby 支持,新版本请优先使用 MySQL 存储。
📋 目录
  1. A 1. 确认 Nacos 版本与存储模式
  2. B 2. 执行备份操作
  3. C 3. 恢复数据步骤
  4. D 4. 验证是否生效
  5. E 5. 常见坑与风险排查
A A

对于 Nacos 服务注册元数据,最稳妥的备份方式是直接备份底层存储数据库(如 MySQL),但需注意默认临时实例重启后会丢失,无需也无法备份。Nacos 2.2+ 版本已移除嵌入式 Derby 支持,新版本请优先使用 MySQL 存储。

先说结论:备份策略取决于存储模式、Nacos 版本和外挂数据库配置。临时实例无需备份,持久化实例需备份数据库。

  • 适合:使用 MySQL 存储的生产环境(Nacos 1.x 嵌入式 Derby 需谨慎)
  • 先准备:确认 Nacos 版本,确认实例类型是临时还是持久化,定位数据存储路径
  • 验收:恢复后检查控制台服务列表和配置列表是否完整,日志无报错

1. 确认 Nacos 版本与存储模式

不同版本存储机制差异较大,操作前务必确认版本。

检查版本:

cd [nacos_home]/bin
sh version.sh
# 或查看 pom.properties
cat ../conf/nacos-version.txt

检查存储模式:

查看 conf/application.properties 配置文件。

如何备份和恢复 Nacos 服务注册元数据防止丢失
  • 若配置了 spring.datasource.platform=mysql 且 db.num>=1,为 MySQL 存储。
  • 若未配置数据库相关参数,Nacos 1.x 默认为嵌入式 Derby,Nacos 2.2+ 默认使用 Raft 协议存储元数据(不建议生产环境依赖默认嵌入式)。

2. 执行备份操作

场景 A:MySQL 存储(推荐生产环境)

为保证数据一致性,建议在业务低峰期停止 Nacos 服务后再备份,或使用事务一致性参数。

# 停止 Nacos 服务(推荐)
sh shutdown.sh

# 备份整个数据库(包含结构与数据)
mysqldump -h [host] -u [user] -p `--single-transaction` [database_name] > nacos_backup.sql

场景 B:嵌入式存储(仅限 Nacos 1.x 或测试环境)

注意:Nacos 2.2+ 已移除嵌入式 Derby 支持。若为 1.x 版本,必须停服后备份,防止文件锁死。

# 停止 Nacos 服务
sh shutdown.sh

# 打包 data 目录
cd [nacos_home]
tar -czvf nacos_data_backup.tar.gz ./data

3. 恢复数据步骤

MySQL 模式恢复:

如何备份和恢复 Nacos 服务注册元数据防止丢失

确保目标数据库已创建且字符集一致(推荐 utf8mb4),使用命令行导入。

mysql -u [user] -p [database_name] < nacos_backup.sql

嵌入式模式恢复:

将备份包解压回原路径,确保文件权限与启动用户一致。

tar -xzvf nacos_data_backup.tar.gz -C [nacos_home]

4. 验证是否生效

启动 Nacos 服务,观察 logs/start.out 和 logs/nacos.log,确认无数据库连接错误或数据加载异常。

如何备份和恢复 Nacos 服务注册元数据防止丢失

登录控制台页面:

  • 配置管理:确认之前的配置条目是否存在。
  • 服务管理:对于持久化实例,应能看到服务名;对于临时实例,需启动对应客户端应用,观察是否能自动注册成功。

5. 常见坑与风险排查

1. 临时实例误解:默认注册的服务都是临时的,备份数据库后重启服务器,列表清空是正常现象。客户端重连即可恢复,非备份失败。

2. 嵌入式文件锁:严禁在 Nacos 运行时直接复制 data 目录下的 Derby 文件,会导致数据损坏。务必先停服。

3. 版本兼容性:恢复数据时,目标 Nacos 服务器版本最好与原版本一致。不同版本间的数据库 schema 可能存在差异,导致启动失败。

4. 集群数据不一致:集群部署时,不要只备份其中一个节点的数据目录。若使用 MySQL,备份共享数据库即可;若使用 Raft 嵌入式,需参考官方集群快照指南。