Docs 菜单
Docs 主页
/ /
/ / /

从快照恢复副本集

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

BSON规范 将BSON二进制数据类型 (BinData) 的默认子类型从 2 更改为 0。快照中存储的某些二进制数据可能是 BinData 子类型 2。备份会自动检测 BinData 子类型 2 的快照数据并将其转换为 BinData 子类型 0。如果应用程序代码需要使用 BinData 子类型 2,则必须更新应用程序代码以处理 BinData 子类型 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. 在侧边栏中,单击 Database 标题下的 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

    UNIX 纪元以来经过的时间戳(以秒数表示)

    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. 在侧边栏中,单击 Database 标题下的 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

    UNIX 纪元以来经过的时间戳(以秒数表示)

    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. 在侧边栏中,单击 Database 标题下的 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的Atlas 备份快照

如果您尝试使用运行MongoDB 4.4的mongod恢复MongoDB 4.2快照,则您的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> \
    --accessList <database1.collection1, database2, etc.> \
    --denyList <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 解决。如果您复制了Cloud Manager中提供的mongodb-backup-restore-util命令,则此字段已预先配置。

    --port

    必需

    为应应用mongod oplog 的 提供服务的托管提供端口。

    --opStart

    必需

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

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

    --opEnd

    必需

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

    此值不能大于oplog的末尾。

    --logFile

    Optional

    提供写入MBRU日志的路径(包括文件名)。

    --oplogSourceAddr

    必需

    提供Cloud Manager资源端点的URL

    --apiKey

    必需

    提供您的Cloud Manager代理API密钥。

    --groupId

    必需

    提供群组ID。

    --rsId

    必需

    提供副本集ID。

    --accessList

    Optional

    提供要限制恢复的数据库和/或集合的列表。

    --denyList

    Optional

    提供要从恢复中排除的数据库和/或集合的列表。

    --seedReplSetMember

    Optional

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

    需要--oplogSizeMB--seedTargetPort

    --oplogSizeMB

    可选的

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

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

    --seedTargetPort

    可选的

    提供副本集主节点 (primary node in the replica set)的端口。这可能与使用的临时端口不同。

    如果设立了--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. 在侧边栏中,单击 Database 标题下的 Processes

显示“进程”页面。

32

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

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

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

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

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

  3. 在侧边栏中,单击 Database 标题下的 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

    UNIX 纪元以来经过的时间戳(以秒数表示)

    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. 在侧边栏中,单击 Database 标题下的 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

    UNIX 纪元以来经过的时间戳(以秒数表示)

    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. 在侧边栏中,单击 Database 标题下的 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中, Go项目的 Continuous Backup 页面。

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

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

      3. 在侧边栏中,单击 Database 标题下的 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> \
    --accessList <database1.collection1, database2, etc.> \
    --denyList <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 解决。如果您复制了Cloud Manager中提供的mongodb-backup-restore-util命令,则此字段已预先配置。

    --port

    必需

    为应应用mongod oplog 的 提供服务的托管提供端口。

    --opStart

    必需

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

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

    --opEnd

    必需

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

    此值不能大于oplog的末尾。

    --logFile

    Optional

    提供写入MBRU日志的路径(包括文件名)。

    --oplogSourceAddr

    必需

    提供Cloud Manager资源端点的URL

    --apiKey

    必需

    提供您的Cloud Manager代理API密钥。

    --groupId

    必需

    提供群组ID。

    --rsId

    必需

    提供副本集ID。

    --accessList

    Optional

    提供要限制恢复的数据库和/或集合的列表。

    --denyList

    Optional

    提供要从恢复中排除的数据库和/或集合的列表。

    --seedReplSetMember

    Optional

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

    需要--oplogSizeMB--seedTargetPort

    --oplogSizeMB

    可选的

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

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

    --seedTargetPort

    可选的

    提供副本集主节点 (primary node in the replica set)的端口。这可能与使用的临时端口不同。

    如果设立了--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 加密的加密快照,请在完成恢复后轮换主密钥

后退

恢复分片集群

在此页面上