Docs 菜单
Docs 主页
/
MongoDB Cloud Manager
/ /

从快照恢复副本集

在此页面上

  • 注意事项
  • 先决条件
  • 恢复快照

从备份恢复副本集时,Cloud Manager 会为您提供所选恢复点的恢复文件。要了解恢复过程,请参阅恢复概述。

BSON 规范 将 BSON 二进制数据类型 (BinData ) 的默认子类型从2 更改为0 。快照中存储的某些二进制数据可能是BinData 2BinData2BinData子类型0 。备份会自动检测BinData 2BinData子类型 的快照数据并将其转换为 子类型 。如果应用程序代码需要使用 子类型 ,则必须更新应用程序代码以处理 子类型0 。

提示

另请参阅:

有关 BSON 规范 的注释 解释此变更的具体细节。

备份恢复文件包括名为restoreInfo.txt的元数据文件。 此文件捕获拍摄快照时数据库使用的选项。 恢复后,数据库必须使用列出的选项运行。 此文件包含:

  • groupName

  • ReplicaSetName

  • 集群 ID (如果适用)

  • 快照时间戳(作为 UTC 时间戳)

  • 恢复时间戳(作为 UTC 的 BSON 时间戳)

  • 上次应用的oplog (作为 UTC 的BSON时间戳)

  • MongoDB 版本

  • storage engine类型

  • mongod 拍摄快照时数据库使用的启动选项

所有 FCV数据库必须符合相应的备份注意事项。

要执行手动恢复,您必须在 Cloud Manager 中具有备份管理员角色。

您必须确保 MongoDB 部署在恢复期间不会收到客户端请求。 您必须:

  • 使用新主机名恢复到新系统,并在新部署运行后重新配置应用程序代码,或者

  • 确保恢复数据时 MongoDB 部署不会收到客户端请求。

要让 Cloud Manager 自动恢复快照,请执行以下操作:

1
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 单击侧边栏中的 Continuous Backup(支持)。

    显示“持续备份”页面。

2
3
4
  1. 选择要恢复备份的时间点。

    恢复类型
    说明
    操作
    Snapshot
    允许您选择一个已存储的快照。
    选择要恢复的现有快照
    Point In Time

    创建一个自定义快照,包括所有操作,直到但不包括所选时间。默认情况下,Oplog 会将数据保存 24 小时。

    例如,如果您选择12:00 ,则恢复中的最后一次操作为11:59:59或更早。

    重要

    在 FCV 4中。 0 ,您无法执行涵盖最近一次备份重新同步之前任何时间的PIT恢复。有关导致重新同步的条件,请参阅重新同步备份。本说明不适用于 FCV 4 。 2或更高版本。

    选择DateTime
    Oplog Timestamp

    创建自定义快照,其中包括输入的oplog时间戳(含)之前的所有操作。 oplog Timestamp 包含两个字段:

    Timestamp
    Increment
    作为 32 位序数在该秒内应用的操作顺序。

    输入oplog TimestampIncrement

    副本集上运行针对local.oplog.rs的查询,以查找所需的时间戳。

  2. 单击 Next(连接)。

5
  1. 单击 Choose Cluster to Restore to(连接)。

  2. 填写以下字段:

    字段
    操作
    Project
    选择要将 快照 恢复到的 项目 。
    Cluster to Restore to

    选择要将快照恢复到的集群

    Cloud Manager必须管理目标副本集。

    警告:自动化操作会删除集群中的所有现有数据。它会保留现有集群的所有备份数据和快照。

  1. 单击 Restore(连接)。

    Cloud Manager 记录恢复需要多少存储空间。

6

警告

考虑自动恢复

此过程涉及大量步骤。其中一些步骤会产生严重的安全隐患。如果您不需要恢复到 Cloud Manager 未管理的部署,请考虑自动恢复。

1
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 单击侧边栏中的 Continuous Backup(支持)。

    显示“持续备份”页面。

2
3
4
  1. 选择要恢复备份的时间点。

    恢复类型
    说明
    操作
    Snapshot
    允许您选择一个已存储的快照。
    选择要恢复的现有快照
    Point In Time

    创建一个自定义快照,包括所有操作,直到但不包括所选时间。默认情况下,Oplog 会将数据保存 24 小时。

    例如,如果您选择12:00 ,则恢复中的最后一次操作为11:59:59或更早。

    重要

    在 FCV 4中。 0 ,您无法执行涵盖最近一次备份重新同步之前任何时间的PIT恢复。有关导致重新同步的条件,请参阅重新同步备份。本说明不适用于 FCV 4 。 2或更高版本。

    选择DateTime
    Oplog Timestamp

    创建自定义快照,其中包括输入的oplog时间戳(含)之前的所有操作。 oplog Timestamp 包含两个字段:

    Timestamp
    Increment
    作为 32 位序数在该秒内应用的操作顺序。

    输入oplog TimestampIncrement

    副本集上运行针对local.oplog.rs的查询,以查找所需的时间戳。

  2. 单击 Next(连接)。

5
6
  1. 配置以下下载选项:

    Pull Restore Usage Limit
    选择链接的使用次数。如果您选择No Limit ,则该链接可重复使用,直到过期。
    Restore Link Expiration (in hours)
    选择链接过期前的小时数。默认值为1 。最大值是所选快照过期前的小时数。
  2. 单击 Finalize Request(连接)。

  3. 如果您使用2 FA ,Cloud Manager 会提示您输入2 FA 代码。输入您的2 FA 代码,然后单击Finalize Request

7
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 单击侧边栏中的 Continuous Backup(支持)。

    显示“持续备份”页面。

8

Cloud Manager 创建指向快照的链接。默认情况下,这些链接的有效期为一小时,且只能使用一次。

要下载快照,请执行以下操作:

  1. 单击 Restore History(连接)。

  2. 恢复作业完成后,单击显示的每个副本集(get link)

  3. 单击:

    • 点击链接右侧的“复制”按钮,可复制链接以供日后使用,或

    • Download 立即下载快照。

9

在尝试手动恢复数据之前,请从自动化中删除副本集。

选择Unmanage this item in Ops Managers but continue to monitor选项。

10

根据您的路径,您可能需要指定mongosh的路径。运行:

mongosh --port <port> \
--eval "db.getSiblingDB('admin').shutdownServer()"
11
存储容量:
目标主机的硬件需要有足够的可用存储空间来存储恢复的数据。如果要保留此主机上的任何现有集群数据,请确保该主机有足够的可用空间用于集群数据和恢复的数据。
MongoDB 版本
要恢复的目标主机和要恢复的源主机必须运行相同的 MongoDB Server 版本。要检查 MongoDB 版本,请从终端或 Shell 运行mongod --version

要了解更多信息,请参阅安装。

12

在将快照的数据文件移动到目标主机之前,请检查目标主机是否包含任何现有文件,并删除除automation-mongod.conf文件之外的所有文件。

解压快照文件并将其移动到目标主机,如下所示:

tar -xvf <backupSnapshot>.tar.gz
mv <backupSnapshot> </path/to/datafiles>
13

作为临时措施,以独立模式启动mongod进程。这允许您在后续步骤中向system.replset集合添加新的配置参数。

在此过程中提到<ephemeralPort>的所有步骤中,请使用用于临时独立mongod进程的 。此端口必须不同于源主机端口和目标主机端口。

运行mongod进程,如下所示。根据路径,您可能需要指定mongod二进制文件的路径。

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \

如果要从经过命名空间筛选的快照恢复,请使用--restore选项。

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \
--restore

mongod进程开始接受连接后,继续。

14

从运行此mongod进程的主机启动mongosh 。根据您的路径,您可能需要指定mongosh的路径。

要连接到在上一步中指定的同一<ephemeralPort>上侦听本地主机的mongod ,请运行:

mongosh --port <ephemeralPort>

mongosh连接到mongod后,继续。

15

要执行手动恢复,您必须在 Cloud Manager 中具有备份管理员角色。

运行以下命令,删除以前的副本集配置和其他非 oplog、与复制相关的集合。

db.getSiblingDB("local").replset.minvalid.drop()
db.getSiblingDB("local").replset.oplogTruncateAfterPoint.drop()
db.getSiblingDB("local").replset.election.drop()
db.getSiblingDB("local").system.replset.remove({})

成功的响应应如下所示:

> db.getSiblingDB("local").replset.minvalid.drop()
true
> db.getSiblingDB("local").replset.oplogTruncateAfterPoint.drop()
true
> db.getSiblingDB("local").replset.election.drop()
true
> db.getSiblingDB("local").system.replset.remove({})
WriteResult({ "nRemoved" : 1 })
16

将以下文档插入local数据库的system.replset集合中。更改以下变量:

  • <replaceMeWithTheReplicaSetName> 到副本集的名称。此名称不必与旧名称相同。

  • <host> 为该副本集成员提供服务的主机。

  • <ephemeralPortNewReplicaSet> 到新副本集的临时端口。这必须是与您在此过程的步骤11中指定的<ephemeralPort>不同的端口。

1db.getSiblingDB("local").system.replset.insertOne({
2 "_id" : "<replaceMeWithTheReplicaSetName>",
3 "version" : NumberInt(1),
4 "protocolVersion" : NumberInt(1),
5 "members" : [
6 {
7 "_id" : NumberInt(0),
8 "host" : "<host>:<ephemeralPortNewReplicaSet>"
9 }
10 ],
11 "settings" : {
12
13 }
14})

成功的响应应如下所示:

{ "acknowledged" : true, "insertedId" : "<yourReplicaSetName>" }
17

发出以下命令:

db.getSiblingDB("local").replset.minvalid.insertOne({
"_id" : ObjectId(),
"t" : NumberLong(-1),
"ts" : Timestamp(0,1)
})

成功的响应应如下所示:

{ "acknowledged" : true, "insertedId" : ObjectId("<yourObjectId>") }
18

oplogTruncateAfterPoint文档设置为restoreInfo.txt文件的Restore Timestamp字段中提供的值。

该文件中的Restore Timestamp字段包含两个值。在以下示例中,第一个值是时间戳,第二个值是增量。

1...
2Restore timestamp: (1609947369, 2)
3Last Oplog Applied: Wed Jan 06 15:36:09 GMT 2021 (1609947369, 1)
4MongoDB Version: 4.2.11
5...

以下示例代码使用上一示例中的时间戳值和增量值。

truncateAfterPoint = Timestamp(1609947369,2)
db.getSiblingDB("local").replset.oplogTruncateAfterPoint.insertOne({
"_id": "oplogTruncateAfterPoint",
"oplogTruncateAfterPoint": truncateAfterPoint
})

成功的响应应如下所示:

WriteResult({ "nInserted" : 1 })

注意

正在恢复 MongoDB 4 。 2使用 MongoDB 4的快照。 4

如果您尝试恢复 MongoDB 4 .运行 MongoDB 4的mongod的2快照。 4 ,您的 oplog 可能包含不需要的文档。

要解决此问题,您可以执行以下任一操作:

  • 将时间戳递减1 。

  • 使用 MongoDB 4进行恢复。 2 。

  • 让 Cloud Manager 运行自动恢复。

此问题不适用于 MongoDB 4 。 4或更高版本的快照。

19

根据您的路径,您可能需要指定mongosh的路径。运行:

mongosh --port <ephemeralPort> \
--eval "db.getSiblingDB('admin').shutdownServer()"
20

使用以下命令启动mongod ,并指定以下参数:

  • <bind_ip> 为您在此过程的步骤14中指定的该副本集成员提供服务的主机。

  • <port> 到您在此过程的步骤11中指定的 <ephemeralPort>。

mongod会重放直至Restore timestamp的 oplog。

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \
--bind_ip <host-serving-this-replica-set-member> \
--replSet <replaceMeWithTheReplicaSetName>
21

根据您的路径,您可能需要指定mongosh的路径。运行:

mongosh --port <ephemeralPort> \
--eval "db.getSiblingDB('admin').shutdownServer()"
22

此步骤是可选的。如果需要时点恢复,请运行它。如果您需要此步骤,请完成此步骤,然后运行步骤21和22 。如果不需要此步骤,请继续执行步骤23 。在此步骤中,您将在副本集的目标实例上下载并运行 MongoDB 备份恢复实用工具,然后停止该实例。

  1. 将 MongoDB 备份恢复实用工具下载到您的主机。

    如果您关闭了恢复面板,请单击Continuous Backup in DeploymentMore ,然后单击Download MongoDB Backup Restore Utility

  2. 使用提取的快照目录作为数据目录,在未启用身份验证的情况下启动mongod实例。根据路径,您可能需要指定mongod二进制文件的路径。

    mongod --port <ephemeralPort> \
    --dbpath </path/to/datafiles> \
    --setParameter ttlMonitorEnabled=false

    警告

    MongoDB 备份恢复实用工具不支持身份验证,因此您无法通过身份验证启动此临时数据库。

  3. 在目标主机上运行 MongoDB 备份恢复实用工具。为副本集运行一次。

    重要

    预配置的 mongodb-backup-restore-util 命令

    Cloud Manager 在Run Binary with PIT Options下的恢复面板上为mongodb-backup-restore-util提供相应的恢复选项。

    您应复制 Cloud Manager 中提供的mongodb-backup-restore-util命令。

    ./mongodb-backup-restore-util --https --host <targetHost> \
    --port <targetPort> \
    --opStart <opLogStartTimeStamp> \
    --opEnd <opLogEndTimeStamp> \
    --logFile <logPath> \
    --apiKey <apiKey> \
    --groupId <groupId> \
    --rsId <rsId> \
    --whitelist <database1.collection1, database2, etc.> \
    --blacklist <database1.collection1, database2, etc.> \
    --seedReplSetMember \
    --oplogSizeMB <size> \
    --seedTargetPort <port> \
    --ssl \
    --sslCAFile </path/to/ca.pem> \
    --sslPEMKeyFile </path/to/pemkey.pem>
    --sslClientCertificateSubject <distinguishedName> \
    --sslRequireValidServerCertificates <true|false> \
    --sslServerClientCertificate </path/to/client.pem> \
    --sslServerClientCertificatePassword <password> \
    --sslRequireValidMMSBackupServerCertificate <true|false> \
    --sslTrustedMMSBackupServerCertificate </path/to/mms-certs.pem> \
    --httpProxy <proxyURL>

    mongodb-backup-restore-util命令使用以下选项:

    选项
    必要性
    说明
    --host
    必需
    提供为应应用 oplog mongod 提供服务的主机的主机名、 FQDN IPv4 地址或 IPv6 地址。如果复制了mongodb-backup-restore-util Cloud Manager 中提供的 命令,则此字段已预先配置。
    --port
    必需
    为应应用mongod oplog 的 提供服务的主机提供端口。
    --opStart
    必需

    为要包含在恢复中的第一个 oplog 条目提供 BSON 时间戳 。此信息显示在随下载的快照提供的 文件的“Last OplogrestoreInfo.txt Applied”条目中。

    此值必须小于或等于--opEnd值。

    --opEnd
    必需

    提供要包含在恢复中的最后一个 oplog 条目的 BSON 时间戳

    此值不能大于 oplog 的末尾。

    --logFile
    Optional
    提供写入MBRU日志的路径(包括文件名)。
    --oplogSourceAddr
    必需
    提供 Cloud Manager 资源端点的URL
    --apiKey
    必需
    提供您的 Cloud Manager 代理API 密钥。
    --groupId
    必需
    提供群组ID。
    --rsId
    必需
    提供副本集ID。
    --whitelist
    Optional
    提供要限制恢复的数据库和/或集合的列表。
    --blacklist
    Optional
    提供要从恢复中排除的数据库和/或集合的列表。
    --seedReplSetMember
    Optional

    如果您需要副本集成员来重新创建oplog集合并使用正确的时间戳作为种子,则使用。

    需要--oplogSizeMB--seedTargetPort

    --oplogSizeMB
    可选的

    提供oplog大小(以 MB 为单位)。

    如果设置了--seedReplSetMember ,则为必填项。

    --seedTargetPort
    可选的

    提供 副本集 节点的端口。这可能与 临时端口 不同 使用。

    如果设置了--seedReplSetMember ,则为必填项。

    --ssl
    可选的

    如果您需要TLS / SSL才能将oplog应用到mongod ,则使用。

    需要--sslCAFile--sslPEMKeyFile

    --sslCAFile
    可选的

    提供证书颁发机构文件的路径。

    如果设置了--ssl ,则为必填项。

    --sslPEMKeyFile
    可选的

    提供PEM证书文件的路径。

    如果设置了--ssl ,则为必填项。

    --sslPEMKeyFilePwd
    可选的

    提供--sslPEMKeyFile中指定的PEM证书文件的密码。

    如果设置了--ssl并且PEM密钥文件已加密,则为必填项。

    --sslClientCertificateSubject
    提供目标 MongoDB 进程的客户端证书主题或标识名 (DN)。
    --sslRequireValidServerCertificates
    Optional
    设置一个标志,指示该工具是否应验证目标 MongoDB 进程提供的证书。
    --sslServerClientCertificate
    Optional
    提供客户端证书文件的绝对路径,用于连接到 Cloud Manager 主机。
    --sslServerClientCertificatePassword
    可选的

    提供用于连接到 Cloud Manager 主机的客户端证书文件密码的绝对路径。

    如果设置了--sslServerClientCertificate并且该证书已加密,则为必填项。

    --sslRequireValidMMSBackupServerCertificate
    Optional
    设置一个标志,指示在联系 Cloud Manager 主机时是否需要有效证书。默认值为true
    --sslTrustedMMSBackupServerCertificate
    Optional
    为 Cloud Manager 主机提供PEM格式的受信任证书颁发机构证书的绝对路径。如果未提供此标志,则使用系统证书颁发机构。
    --httpProxy
    Optional
    提供该工具可以使用的 HTTP 代理服务器的 URL 。

    表示如果您复制了 Cloud Manager 中提供的mongodb-backup-restore-util命令,则此字段已预先配置。

  4. 停止实例上的mongod 。根据您的路径,您可能需要指定mongosh的路径。运行:

    mongosh --port <ephemeralPort> \
    --eval "db.getSiblingDB('admin').shutdownServer()"
23

仅当您运行了步骤20时才需要执行此步骤。如果您不需要运行步骤20 ,则继续执行步骤23 。使用以下命令启动mongodmongod会重放 oplog,直至Restore timestamp 。根据您的路径,您可能需要指定mongod二进制文件的路径。

mongod --dbpath </path/to/datafiles> \
--port <ephemeralPort> \
--replSet <replaceMeWithTheReplicaSetName>

完成此步骤后,实际恢复过程即完成。在以下步骤中,您将恢复副本集的配置并重新导入。

24

仅当您运行了步骤20时才需要执行此步骤。如果您不需要运行步骤20 ,则继续执行步骤23 。

根据您的路径,您可能需要指定mongosh的路径。运行:

mongosh--port <ephemeralPort> \
--eval "db.getSiblingDB('admin').shutdownServer()"
25

使用以下命令将mongod进程作为独立实例启动。对于<port> ,使用副本集中该节点预期运行的实际端口。根据您的路径,您可能需要指定mongod二进制文件的路径。

mongod --dbpath </path/to/datafiles> \
--port <port>

mongod进程开始接受连接后,继续。

26

运行以下命令:

mongosh --port <port> \
--eval db.getSiblingDB("local").system.replset.remove({})
27

根据您的路径,您可能需要指定mongosh的路径。运行:

mongosh --port <port> \
--eval "db.getSiblingDB('admin').shutdownServer()"
28
29

此时,副本集中的数据文件处于一致状态,但需要更新副本集配置,以便每个节点相互了解。

运行以下命令:

sudo -u mongod <path/to/target_mongod_binary> -f /path/to/datafiles/automation-mongod.conf

以下示例将重新启动版本为4的所有节点。 4 。 12企业,数据路径为/data6/node3

sudo -u mongod /var/lib/mongodb-mms-automation/mongodb-linux-x86_64-4.4.12-ent/bin/mongod -f /data6/node3/automation-mongod.conf
30

登录其中一个节点并运行以下命令:

rs.initiate()
rs.add( { host: "<host2>:<port>" } )
rs.add( { host: "<host3>:<port>" } )
31
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 如果 Deployment(数据库部署)页面尚未出现,请单击侧边栏中的 Deployment(数据库)。

    显示“部署”页面。

32

要再次自动化管理副本集,请将副本集重新导入 Cloud Manager。

单击Add ,选择Existing MongoDB Deployment ,然后继续将Automation添加回集群。

要让 Cloud Manager 自动恢复快照,请执行以下操作:

1
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 单击侧边栏中的 Continuous Backup(支持)。

    显示“持续备份”页面。

2
3
4
  1. 选择要恢复备份的时间点。

    恢复类型
    说明
    操作
    Snapshot
    允许您选择一个已存储的快照。
    选择要恢复的现有快照
    Point In Time

    创建一个自定义快照,包括所有操作,直到但不包括所选时间。默认情况下,Oplog 会将数据保存 24 小时。

    例如,如果您选择12:00 ,则恢复中的最后一次操作为11:59:59或更早。

    重要

    在 FCV 4中。 0 ,您无法执行涵盖最近一次备份重新同步之前任何时间的PIT恢复。有关导致重新同步的条件,请参阅重新同步备份。本说明不适用于 FCV 4 。 2或更高版本。

    选择DateTime
    Oplog Timestamp

    创建自定义快照,其中包括输入的oplog时间戳(含)之前的所有操作。 oplog Timestamp 包含两个字段:

    Timestamp
    Increment
    作为 32 位序数在该秒内应用的操作顺序。

    输入oplog TimestampIncrement

    副本集上运行针对local.oplog.rs的查询,以查找所需的时间戳。

  2. 单击 Next(连接)。

要查找最新的oplog条目,请在mongosh 中运行以下查询:

db.getSiblingDB('local').oplog.rs.find().sort({$natural:-1}).limit(1).pretty()

成功的结果应如下所示:

{
"ts": Timestamp(1537559320, 1),
"h": NumberLong("-2447431566377702740"),
"v": 2,
"op": "n",
"ns": "",
"wall": ISODate("2018-09-21T19:48:40.708Z"),
"o": {
"msg": "initiating set"
}
}

ts值的各部分与TimestampIncrement框所需的值相对应。

注意

要将纪元时间转换为人类可读的时间戳,请尝试使用 Epoch Converter 等工具

MongoDB 不支持此服务。此处引用仅供参考。

5
  1. 单击 Choose Cluster to Restore to(连接)。

  2. 填写以下字段:

    字段
    操作
    Project
    选择要将 快照 恢复到的 项目 。
    Cluster to Restore to

    选择要将快照恢复到的集群

    Cloud Manager必须管理目标副本集。

    警告:自动化操作会删除集群中的所有现有数据。它会保留现有集群的所有备份数据和快照。

  1. 单击 Restore(连接)。

    Cloud Manager 记录恢复需要多少存储空间。

6
1
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 单击侧边栏中的 Continuous Backup(支持)。

    显示“持续备份”页面。

2
3
4
  1. 选择要恢复备份的时间点。

    恢复类型
    说明
    操作
    Snapshot
    允许您选择一个已存储的快照。
    选择要恢复的现有快照
    Point In Time

    创建一个自定义快照,包括所有操作,直到但不包括所选时间。默认情况下,Oplog 会将数据保存 24 小时。

    例如,如果您选择12:00 ,则恢复中的最后一次操作为11:59:59或更早。

    重要

    在 FCV 4中。 0 ,您无法执行涵盖最近一次备份重新同步之前任何时间的PIT恢复。有关导致重新同步的条件,请参阅重新同步备份。本说明不适用于 FCV 4 。 2或更高版本。

    选择DateTime
    Oplog Timestamp

    创建自定义快照,其中包括输入的oplog时间戳(含)之前的所有操作。 oplog Timestamp 包含两个字段:

    Timestamp
    Increment
    作为 32 位序数在该秒内应用的操作顺序。

    输入oplog TimestampIncrement

    副本集上运行针对local.oplog.rs的查询,以查找所需的时间戳。

  2. 单击 Next(连接)。

要查找最新的oplog条目,请在mongosh 中运行以下查询:

db.getSiblingDB('local').oplog.rs.find().sort({$natural:-1}).limit(1).pretty()

成功的结果应如下所示:

{
"ts": Timestamp(1537559320, 1),
"h": NumberLong("-2447431566377702740"),
"v": 2,
"op": "n",
"ns": "",
"wall": ISODate("2018-09-21T19:48:40.708Z"),
"o": {
"msg": "initiating set"
}
}

ts值的各部分与TimestampIncrement框所需的值相对应。

注意

要将纪元时间转换为人类可读的时间戳,请尝试使用 Epoch Converter 等工具

MongoDB 不支持此服务。此处引用仅供参考。

5
6
  1. 配置以下下载选项:

    Pull Restore Usage Limit
    选择链接的使用次数。如果您选择No Limit ,则该链接可重复使用,直到过期。
    Restore Link Expiration (in hours)
    选择链接过期前的小时数。默认值为1 。最大值是所选快照过期前的小时数。
  2. 单击 Finalize Request(连接)。

  3. 如果您使用2 FA ,Cloud Manager 会提示您输入2 FA 代码。输入您的2 FA 代码,然后单击Finalize Request

7
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 单击侧边栏中的 Continuous Backup(支持)。

    显示“持续备份”页面。

8

Cloud Manager 创建指向快照的链接。默认情况下,这些链接的有效期为一小时,且只能使用一次。

要下载快照,请执行以下操作:

  1. 单击 Restore History(连接)。

  2. 恢复作业完成后,单击出现的每个副本集(get link) (恢复)。

  3. 单击:

    • 点击链接右侧的“复制”按钮,可复制链接以供日后使用,或

    • Download 立即下载快照。

重要

用于时间点恢复的额外步骤

对于时间点和 oplog 时间戳恢复,会显示其他说明。最后一步显示了使用MBRU必须运行的完整命令。它包括确保完整恢复所需的所有选项。

选择并复制Run Binary with PIT Options下提供的mongodb-backup-restore-util命令。

9

例子

tar -xvf <backupSnapshot>.tar.gz
mv <backupSnapshot> <temp-database-path>
10
  1. 将 MongoDB 备份恢复实用工具下载到您的主机。

    注意

    如果关闭了恢复面板:

    1. 在 MongoDB Cloud Manager 中,转到项目的Continuous Backup页面。

      1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

      2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

      3. 单击侧边栏中的 Continuous Backup(支持)。

      显示“持续备份”页面。

    2. 单击More ,然后单击Download MongoDB Backup Restore Utility

  2. 使用提取的快照目录作为数据目录,在未启用身份验证的情况下启动mongod实例。

    例子

    mongod --port <port number> \
    --dbpath <temp-database-path> \
    --setParameter ttlMonitorEnabled=false

    警告

    MongoDB 备份恢复实用工具不支持身份验证,因此您无法通过身份验证启动此临时数据库。

  3. 在目标主机上运行 MongoDB 备份恢复实用程序。为副本集运行一次。

    重要

    预配置的 mongodb-backup-restore-util 命令

    Cloud Manager 在Run Binary with PIT Options下的恢复面板上为mongodb-backup-restore-util提供相应的恢复选项。

    您应复制 Cloud Manager 中提供的mongodb-backup-restore-util命令。

    ./mongodb-backup-restore-util --https --host <targetHost> \
    --port <targetPort> \
    --opStart <opLogStartTimeStamp> \
    --opEnd <opLogEndTimeStamp> \
    --logFile <logPath> \
    --apiKey <apiKey> \
    --groupId <groupId> \
    --rsId <rsId> \
    --whitelist <database1.collection1, database2, etc.> \
    --blacklist <database1.collection1, database2, etc.> \
    --seedReplSetMember \
    --oplogSizeMB <size> \
    --seedTargetPort <port> \
    --ssl \
    --sslCAFile </path/to/ca.pem> \
    --sslPEMKeyFile </path/to/pemkey.pem>
    --sslClientCertificateSubject <distinguishedName> \
    --sslRequireValidServerCertificates <true|false> \
    --sslServerClientCertificate </path/to/client.pem> \
    --sslServerClientCertificatePassword <password> \
    --sslRequireValidMMSBackupServerCertificate <true|false> \
    --sslTrustedMMSBackupServerCertificate </path/to/mms-certs.pem> \
    --httpProxy <proxyURL>

    mongodb-backup-restore-util命令使用以下选项:

    选项
    必要性
    说明
    --host
    必需
    提供为应应用 oplog mongod 提供服务的主机的主机名、 FQDN IPv4 地址或 IPv6 地址。如果复制了mongodb-backup-restore-util Cloud Manager 中提供的 命令,则此字段已预先配置。
    --port
    必需
    为应应用mongod oplog 的 提供服务的主机提供端口。
    --opStart
    必需

    为要包含在恢复中的第一个 oplog 条目提供 BSON 时间戳 。此信息显示在随下载的快照提供的 文件的“Last OplogrestoreInfo.txt Applied”条目中。

    此值必须小于或等于--opEnd值。

    --opEnd
    必需

    提供要包含在恢复中的最后一个 oplog 条目的 BSON 时间戳

    此值不能大于 oplog 的末尾。

    --logFile
    Optional
    提供写入MBRU日志的路径(包括文件名)。
    --oplogSourceAddr
    必需
    提供 Cloud Manager 资源端点的URL
    --apiKey
    必需
    提供您的 Cloud Manager 代理API 密钥。
    --groupId
    必需
    提供群组ID。
    --rsId
    必需
    提供副本集ID。
    --whitelist
    Optional
    提供要限制恢复的数据库和/或集合的列表。
    --blacklist
    Optional
    提供要从恢复中排除的数据库和/或集合的列表。
    --seedReplSetMember
    Optional

    如果您需要副本集成员来重新创建oplog集合并使用正确的时间戳作为种子,则使用。

    需要--oplogSizeMB--seedTargetPort

    --oplogSizeMB
    可选的

    提供oplog大小(以 MB 为单位)。

    如果设置了--seedReplSetMember ,则为必填项。

    --seedTargetPort
    可选的

    提供 副本集 节点的端口。这可能与 临时端口 不同 使用。

    如果设置了--seedReplSetMember ,则为必填项。

    --ssl
    可选的

    如果您需要TLS / SSL才能将oplog应用到mongod ,则使用。

    需要--sslCAFile--sslPEMKeyFile

    --sslCAFile
    可选的

    提供证书颁发机构文件的路径。

    如果设置了--ssl ,则为必填项。

    --sslPEMKeyFile
    可选的

    提供PEM证书文件的路径。

    如果设置了--ssl ,则为必填项。

    --sslPEMKeyFilePwd
    可选的

    提供--sslPEMKeyFile中指定的PEM证书文件的密码。

    如果设置了--ssl并且PEM密钥文件已加密,则为必填项。

    --sslClientCertificateSubject
    提供目标 MongoDB 进程的客户端证书主题或标识名 (DN)。
    --sslRequireValidServerCertificates
    Optional
    设置一个标志,指示该工具是否应验证目标 MongoDB 进程提供的证书。
    --sslServerClientCertificate
    Optional
    提供客户端证书文件的绝对路径,用于连接到 Cloud Manager 主机。
    --sslServerClientCertificatePassword
    可选的

    提供用于连接到 Cloud Manager 主机的客户端证书文件密码的绝对路径。

    如果设置了--sslServerClientCertificate并且该证书已加密,则为必填项。

    --sslRequireValidMMSBackupServerCertificate
    Optional
    设置一个标志,指示在联系 Cloud Manager 主机时是否需要有效证书。默认值为true
    --sslTrustedMMSBackupServerCertificate
    Optional
    为 Cloud Manager 主机提供PEM格式的受信任证书颁发机构证书的绝对路径。如果未提供此标志,则使用系统证书颁发机构。
    --httpProxy
    Optional
    提供该工具可以使用的 HTTP 代理服务器的 URL 。

    表示如果您复制了 Cloud Manager 中提供的mongodb-backup-restore-util命令,则此字段已预先配置。

11

在尝试手动恢复数据之前,请从自动化中删除副本集。

12

按照 MongoDB 手册中的教程恢复副本集。

13

要再次自动化管理副本集,请将副本集重新导入 Cloud Manager。

重要

恢复使用 AES256-GCM 加密的快照后轮换主密钥

如果恢复 Cloud Manager 使用 AES256-GCM 加密的加密快照,请在完成恢复后轮换主密钥

后退

恢复分片集群

来年

查询备份快照