NetBackup™ for MongoDB 管理指南

Last Published:
Product(s): NetBackup (10.3)
  1. 使用 NetBackup 保护 MongoDB 的概述
    1.  
      关于使用 NetBackup 保护分片、副本集或独立 MongoDB 群集
    2.  
      使用 NetBackup 保护 MongoDB 数据
    3.  
      NetBackup for MongoDB 术语
    4.  
      限制
    5.  
      保护 MongoDB 的前提条件和最佳做法
  2. 验证适用于 NetBackup 的 MongoDB 插件的前提条件
    1.  
      操作系统和平台兼容性
    2.  
      配置 MongoDB 插件的前提条件
  3. 配置 NetBackup for MongoDB
    1.  
      关于 MongoDB 配置工具
    2.  
      手动创建 mongodb.conf 文件的前提条件
    3. 使用 mongodb.conf 文件为 MongoDB 配置备份选项
      1.  
        在 NetBackup 主服务器允许列表中包括配置文件路径
    4.  
      获取 MongoDB 节点的 RSA 密钥
    5. 在 NetBackup 中添加 MongoDB 凭据
      1.  
        关于凭据配置文件
      2.  
        如何在 NetBackup 中添加 MongoDB 凭据
      3.  
        关于保护数据的 MongoDB 角色
    6.  
      使用非 root 用户作为主机用户
    7. 管理备份主机
      1.  
        在 NetBackup 主服务器允许列表中包括 NetBackup 客户端
  4. 使用 NetBackup 备份 MongoDB
    1. 备份 MongoDB 数据
      1.  
        备份 MongoDB 群集
    2.  
      备份 MongoDB 群集的前提条件
    3. 为 MongoDB 插件配置 NetBackup 策略
      1.  
        使用 Web UI 为 MongoDB 群集创建 BigData 备份策略
  5. 使用 NetBackup 还原或恢复 MongoDB 数据
    1.  
      还原 MongoDB 数据
    2.  
      MongoDB 还原和恢复的前提条件
    3.  
      使用 NetBackup Web UI 在同一群集上还原 MongoDB 数据
    4.  
      使用 NetBackup Web UI 在备用群集上还原 MongoDB 数据
    5.  
      关于在备用客户端上以高可用性设置还原 MongoDB 数据
    6.  
      恢复过程完成后的手动步骤
  6. 故障排除
    1.  
      关于 NetBackup for MongoDB 调试日志记录
    2.  
      使用 NetBackup 保护 MongoDB 的已知限制
  7. 附录 A. 其他信息
    1.  
      添加和更新 MongodB 凭据的 MongodB 配置实用程序工作流程示例
  8.  
    索引

使用 NetBackup 保护 MongoDB 的已知限制

下表列出了使用 NetBackup 保护 MongoDB 的已知限制:

表:已知限制

限制

解决方法

在包含多个 mongos 进程的高可用性分片 MongoDB 群集中,启动还原和恢复操作之前,应只运行配置服务器副本集 (CSRS) 映像的还原目标上的 mongos 进程。

在启动还原和恢复操作之前,手动停止群集中的任何其他 mongos 进程。

恢复后,重新配置 mongos 服务以指向恢复的群集。

如果除了一个节点外,所有其他节点上的 mongos 进程都未关闭,则其他 mongos 进程可能会与还原和恢复操作冲突,从而导致无法通过连接到 mongos 访问还原的数据。

如果 mongos 进程在启动还原和恢复之前未关闭,则必须在恢复后手动关闭无效的 mongos 进程,然后重新启动群集中所有恢复的 mongodmongos 进程。

必须使用配置文件的绝对路径启动 MongoDB 进程。此外,也必须对证书文件和 CA 文件使用绝对路径。还必须为 CA 文件、PEM 文件和密钥文件指定绝对路径。

N/A

如果在备份期间存在的身份验证类型发生更改,并且您运行的恢复作业需要不同的身份验证,则恢复过程可能会失败。

确保恢复期间使用的身份验证类型与备份期间使用的类型相同。

运行备份后,如果重命名卷组或逻辑卷,则后续备份可能会失败。

在恢复期间,确保仅选择一个完全备份映像及其相关的后续增量式映像。如果选择多个映像,恢复可能会失败,因为还原的数据可能会损坏。

恢复 MongoDB 群集后,仅已还原节点的群集信息可用。

恢复过程完成后,手动将辅助节点添加到群集。

有关更多信息,请参考以下文章:add-members-to-the-replica-set

在备份过程中,如果 MongoDB 导入操作正在运行,则可能会变得无响应。避免在备份或还原过程中执行 MongoDB 导入操作。

在还原过程中,将显示 The restore was successfully initiated 弹出窗口,但还原作业并未启动。

在 Web UI 中的“源客户端”和“目标客户端”中输入应用程序服务器时,会发生此问题。

确保正确输入“源客户端”和“目标客户端”。“源客户端”必须是应用程序服务器,而“目标客户端”必须是备份主机。

如果您的环境具有 DNAT,请确保备份主机或还原主机以及所有 MongoDB 节点都位于同一专用网络中。

NetBackup for MongoDB 插件不支持命令行 bprestore 选项 -w-print_jobid

不支持从备份主机进行 MongoDB 还原。MongoDB 的所有还原操作都必须从 NetBackup 主服务器启动。

N/A

如果还原作业提交未显示还原作业,请检查目标节点上是否安装了 MongoDB 插件。

如果将 MongoDB 数据库还原到非 LVM 位置,然后尝试从该非 LVM 位置创建备份,备份将失败。

将数据还原到 LVM 位置,然后尝试对已还原的数据创建备份。

在数据路径文件夹中,NetBackup for MongoDB 插件不支持硬链接或软链接。不要添加指向不同逻辑卷或非逻辑卷中位置的任何硬链接或软链接。

如果数据路径文件夹中包含硬链接或软链接,则 NetBackup 无法确保备份时数据保持一致。在还原过程中,硬链接或软链接将创建为文件夹,而不是链接。

在 MongoDB 还原和恢复过程中取消子还原作业时,不会立即删除精简客户端 (mdbserver)。精简客户端将在下一次还原操作后删除。

MongoDB 还原失败并显示错误 2850。

查找以下一个或多个可能的解决方案:

  • 确保目标主机和端口有效,并且具有使用 tpconfig 命令和凭据文件配置的凭据。有关更多信息,请参考 tar 日志。

  • 目标数据库路径不存在,且非 root 用户的权限不足。

    解决方法:

    确保目标数据库路径存在且非 root 用户具有足够的权限。

  • 确保重命名和 filelist 文件中没有特殊字符。此外,如果主服务器是 Windows 计算机,则确保文件的 EOL 转换是 Unix Style (LF)

恢复后,MongoDB 分片节点无法手动重新启动,而且 MongoDB 日志中显示以下错误:

NoSuchKey: Missing expected field "configsvrConnectionString"

在出现问题的 MongoDB 分片上,以维护模式启动 MongoDB,然后在管理数据库中的 system.version 集合上运行以下方法:

use admin
db.system.version.deleteOne
( { _id: "minOpTimeRecovery" } )

在包含一个或多个副本集的还原和恢复操作中,副本集成员将使用 rs.config() 提供的默认 "cfg.members[#].host" 值还原到副本集。

如果以前将此值更新为非默认值,则还原和恢复完成后,可能需要更新此值(例如,从短名称更新为 FQDN),以与原始配置相匹配。

解决方法:

  1. 登录到副本集 MongoDB 群集

  2. 使用以下命令检查配置:

    rs.conf()

  3. 使用以下命令更新副本集的配置:

    Update configuration for replica set member 0:
    cfg = rs.conf();
    cfg.members[0].host = '<hostname.domain.com>:
    <port-number>';
    rs.reconfig(cfg)
  4. 使用以下命令验证更改:

    rs.conf()

  5. 对其他副本集和成员或者只对副本集成员重复这些步骤。

备份作业失败,并显示以下错误代码:

  • (50) 客户端进程被中止

  • (1) 请求的操作部分成功。

  • (112) 未在文件列表中指定文件

对于同一 MongoDB 群集,确保增量式备份的备份时段各不相同。对于同一 MongoDB 群集的增量式备份,备份时段不得相互重叠。

确保为 mdbserver 位置、oplog 位置和快照装入位置设置了相应权限。有关更多信息,请参见使用非 root 用户作为主机用户

在分片 MongoDB 群集环境中,112 错误可能表示 mongos 进程未在备份策略中定义的客户端上运行。

错误 112 也可能表示,在 BigData 策略中添加多个备份主机时使用的是相同主机名。对于运行备份操作的多个备份主机,请使用唯一的主机名。

还原和恢复操作完成后,如果尝试停止并重新启动 mongodmongos 服务(service mongod stopservice mongod restart),则命令将失败。

使用 servicesystemctl 命令(而未使用直接命令)将 mongodmongos 进程作为服务启动时,将发生此错误。

解决方法:

使用备用方法停止 mongodmongos 服务。例如,mongod -f /etc/mongod.conf --shutdownkill <PID>。停止服务后,可以再次使用 servicesystemctl 命令。

注意:

如果在还原和恢复之后停止服务,则关闭 mongodmongos 进程时,将保留 .pid.sock 文件。如果 mongodmongos 服务在关闭后未启动,则必须删除这些文件。

.sock 文件的默认位置为 /tmp

.pid 文件的默认位置为 /var/run/mongodb/

如果在 .bashrc 中添加生成输出的命令,备份操作将失败。

备份失败,错误为 6646,并显示以下错误:

错误:无法与服务器通信。

确保 .bashrcecho 或任何其他输出生成命令)未生成任何输出。shell 为非交互式时,输出不应返回 STDERRSTDOUT

选择两个完全备份映像并尝试还原到这两个完全备份映像之间的时间点映像时,将还原最新的完全备份映像。

解决方法:

在还原和恢复操作期间,不要选择多个完全备份映像。

要实现有效的时间点恢复,请确保运行持续时间较短的差异增量式备份。

在活动监视器中看不到还原作业进度。

解决办法:

对于使用非主服务器作为还原主机的复合还原作业,必须使用“更新任务列表”按钮才能在活动监视器中显示还原作业进度。

备份失败并显示以下错误:

(6625) 备份主机未获得授权,无法完成操作,或其无法与应用程序服务器建立连接。

解决方法:

在安装 MongoDB 的服务器上,确保未在 /etc/ssh/sshd_config 文件中禁用 PasswordAuthentication

运行 sudo service sshd restart 命令。

备份失败并显示以下错误:

(6646) 无法与服务器通信。

解决方法:

确保备份主机可以访问在 mongodb.conf 文件中定义的端口或默认的 mdbserver_port (11000)。

由于以下原因,复制 MongoDB 服务器上的精简客户端文件时可能会出现错误:

  • 与 MongoDB 服务器的连接存在问题

  • 用户无权访问用于复制精简客户端文件的位置。

mdbserver 日志中显示以下错误:

error-sudo: sorry, you must have a tty to run sudo

解决方法:

  • 要全局禁用 requiretty 选项,请在 sudoers 文件中,将 Defaults requiretty 替换为 Defaults !requiretty。此操作将更改全局 sudo 配置。

  • 可以为用户、组或命令更改 sudo 配置。在安装 MongoDB 的服务器上,将主机用户、组或命令添加到 sudoers 文件中。

    添加 Defaults /path/to/my/bin !requiretty

    添加 Default <host_user> !requiretty

即使在运行 mklogdir 命令后,也不会在 Flex 容器上创建 nbaapireq_handler 日志文件夹。

解决方法:

将 Flex Appliance 从版本 8.1.2 升级到 8.2 并将 Flex 介质服务器用作备份主机时,为记录 MongoDB 插件还原日志,会在 /usr/openv/netbackup/logs/ 目录中创建 nbaapireq_handler 文件夹。

free_space_percentage_snapshot 参数所描述的快照大小必须根据 MongoDB 群集大小进行设置,并且必须足够大。如果不满足这些条件,备份将失败,并显示以下错误:

invalid command parameter (20)

根据 MongoDB 群集验证 free_space_percentage_snapshot 值。

备份失败并显示以下错误:

(13) 介质服务器上的文件读取失败

确保满足以下条件:

  • 主服务器上的 NetBackup 版本为最新。

  • 介质服务器上的 NetBackup 版本与主服务器相同,但高于备份主机上的 NetBackup 客户端版本。

  • 备份主机上的 NetBackup 客户端版本等同于或低于介质服务器。

MongoDB 配置工具中缺少 mdb_progress_loglevel 参数。

要修改 mdb_progress_loglevel 参数,请在 MongoDB 配置工具创建 mongodb.conf 文件后更新该文件。

有关更多信息,请参考《MongoDB 管理指南》。

快照未删除,并且显示失效的 mdbserver 实例。这种情况可能会导致备份时出现 Cannot lstat 错误以及备份部分成功。

mongodb.conf 文件中更改以下参数的配置设置:

  • cleanup_time_in_min

  • mdbserver_timeout_min

设置这些值后,可在计划的下一次完全备份或增量式备份之前清除失效快照和失效的 mdbserver 实例。

如果备份主机的 NetBackup 版本低于 8.3,但主服务器和介质服务器的 NetBackup 版本为最新,则在各种场景中可能会显示以下无效错误代码:

13302、13303、13304、13305、13306、13307、13308、13309、13310、13311、13312、13313、13314、13315

解决方法:

如果在实际场景和建议的操作中显示无效错误代码,请参考以下对应的实际错误代码列表:

  • 无效错误代码:13302

    实际错误:6724

    消息:还原节点计数无效。

  • 无效错误代码:13303

    实际错误:6725

    消息:找不到有关 MongoDB 副本集的信息。

  • 无效错误代码:13304

    实际错误:6704

    消息:还原一个副本集上的多个 MongoDB 节点无效。

  • 无效错误代码:13305

    实际错误:6705

    消息:还原仲裁节点上的 MongoDB 数据无效。

  • 无效错误代码:13306

    实际错误:6706

    消息:发现一个已搜索到的分片处于耗尽状态,无法继续执行备份。

  • 无效错误代码:13307

    实际错误:6707

    消息:检测到不受支持的 MongoDB 存储引擎。

  • 无效错误代码:13308

    实际错误:6708

    消息:无法分析命令输出

  • 无效错误代码:13309

    实际错误:6709

    消息:无法运行命令。

  • 无效错误代码:13310

    实际错误:6710

    消息:对恢复的预检查失败,因为数据库路径中存在 WiredTiger 日志文件。

  • 无效错误代码:13311

    实际错误:6711

    消息:无法备份 MongoDB 配置文件。

  • 无效错误代码:13312

    实际错误:6712

    消息:找不到以前备份的操作日志。

  • 无效错误代码:13313

    实际错误:6713

    消息:检测到操作日志回转。

  • 无效错误代码:13314

    实际错误:6714

    消息:迭代收集时出错。

  • 无效错误代码:13315

    实际错误:6715

    消息:操作日志验证错误。

有关详细信息和建议的操作,请参考《NetBackup 状态码参考指南》。

对于导入的 MongoDB 备份映像,可能会禁用 NetBackup Web UI 中的“还原”按钮。

解决办法:

如果将映像导入到最初用于备份这些映像的同一 NetBackup 主服务器,请使用下列方法之一:

  • 使用 bprestore 命令执行还原操作。

  • 还原可启用 Web UI 中的“还原”按钮的目录库备份,然后还原映像。

如果将映像导入到其他 NetBackup 主服务器,而不是最初用于备份这些映像的主服务器,请使用 bprestore 命令运行还原操作。

在备用的分片 MongoDB 群集上,恢复操作失败。显示以下错误:

找不到配置参数。(6661)

在备用群集恢复过程中出现此问题,因为恢复前检查无法在 mongodb.conf 文件中找到备用群集的 mongos 端口。这是由于在使用 MongoDB 配置工具中的“更新”选项添加备用 MongoDB 群集详细信息时,该工具创建 mongodb.conf 文件的方式所致。

解决办法:

在启动恢复过程之前,请更新 mongodb.conf 文件,以将备用群集与原始群集分开。

例如:

现有 mongodb.conf 文件:

 "application_servers":
   {
    "original.mongodb.cluster.com:26050":
		 {
     "alternate_config_server":
			  [
       {
         "hostname:port": "alt.mongodb.cluster.com:26000",
         "mongos_port": "26001"
       }
      ],
    "mongos_port": "26051"
    }
   }

建议更新为 mongodb.conf 文件:

"application_servers": 
   {
    "original.mongodb.cluster.com:26050":
   {
      "mongos_port": "26051"
   },
      "alt.mongodb.cluster.com:26000":
   {
   "mongos_port": "26001"
   }
   }

MUI 工具显示以下错误:

无法删除配置。

推荐的操作:

  • 检查 <hostname-port>.conf 文件是否仍在 /usr/openv/var/global 目录中。

  • 请参考 tpconfig 日志并查看错误:

    Translating EMM_ERROR_MachineNotExist(2000000) to 88 in the Device Config context.

解决方法:

/usr/openv/var/global 中手动删除 <hostname-port>.conf 文件。

如果在 MongoDB 上启用了基于证书的身份验证,差异增量式备份将失败,并显示错误 6709:无法运行命令。

解决办法:

请参考 mdbserver 日志以查找错误代码和命令详细信息,然后执行以下相应操作之一:

  • 如果 mdbserver 日志指示 mongodump 命令失败,请尝试在 MongoDB 主机上手动运行 mongodump 命令并检查错误。

  • 如果 mongodump 命令失败并出现与 X509 证书相关的连接错误,请确保根据 MongoDB 文档,通过使用 subjectAltName 属性更新 MongoDB 服务器证书来修复这些错误。然后重新运行差异增量式备份。