时间点恢复(PITR)
IBM Cloud® Databases for MongoDB Enterprise Edition 使用大于最早可用恢复点的任何时间戳记提供 PITR。 要通过 API 发现最早的恢复点,请使用 时间点恢复时间戳记端点。
对于新的托管模型,PITR 目前通过 CLI,API 和 Terraform 提供。
在过去 7 天内复原到特定点时,如果在上次事务之后有复原时间,那么复原将失败,并显示以下消息: recovery ended before configured recovery target is reached
。 如果由于此原因导致复原失败,请复原到最后一个可用点,或者选择在过去 7 天内复原到特定点的较早日期和时间。
{
"point_in_time_recovery_data": {
"earliest_point_in_time_recovery_time": "2019-09-09T23:16:00Z"
}
}
在此阶段中,时间点恢复时间戳记端点始终返回 当前时间- 大约一周。
恢复
备份将复原到新的部署。 新部署完成供应后,备份文件中的数据将复原到新部署中。 也可以跨帐户复原备份,但仅通过使用 API,并且仅当运行复原的用户对源帐户和目标帐户都具有访问权时才可复原备份。
新部署的大小将自动调整到与您复原的备份时的源部署相同的磁盘和内存分配。 尤其是对于 PITR,这可能不是部署的当前大小。 如果需要调整分配给新部署的资源,请使用 UI,CLI 或 API 中的可选字段来调整新部署的大小。 如果没有为部署提供足够的资源,那么复原将失败,因此请为数据和工作负载分配足够的资源。
当存储和内存恢复到与源部署相同的状态时,不会自动为新实例设置特定实例配置。 在这种情况下,可能需要在复原后重新运行配置。 在运行复原之前,请记下任何实例修改 (参数如 shared_buffers
,max_connections
,deadlock_timeout
和 archive_timeout
),以确保复原完成后实例的准确设置。
在复原备份时,请勿删除源部署。 在删除旧部署之前,必须等待供应新部署并复原备份。 删除部署还会删除其备份。 因此,不仅复原失败,而且您可能无法恢复备份。
通过 UI 恢复
部署的第一个备份完成后,时间点恢复选项将显示在 UI 中。 要启动 PITR,请以全球标准时间输入要恢复到的时间。
时间点恢复时间戳记的格式必须如下所示: %Y-%m-%dT%H:%M:%SZ
。
要复原到最近的可用时间,请选择该选项。 单击 复原 将显示用于恢复的选项。 输入名称,选择新部署的版本,区域和分配的资源。 单击 Recover 开始处理。
如果使用 Key Protect 并具有密钥,那么必须使用 CLI 进行恢复,并且提供了一个命令以方便使用。
使用 CLI 进行恢复
资源控制器支持供应数据库部署,供应和复原由资源控制器 CLI 负责。 使用 resource service-instance-create
命令。
ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE_ID> <SERVICE_PLAN_NAME> <REGION> -p '{"point_in_time_recovery_deployment_id":"DEPLOYMENT_ID", "point_in_time_recovery_time":"TIMESTAMP", "version":""}'
可用参数为
instance_name
(必填):要部署的新实例的可读名称,例如new-mongo
。service_id
(必填):在本例中为databases-for-mongodb
。service_plan_name
(必填):standard
或enterprise
。region
(必填):IBM Cloud®部署新数据库的区域,例如,eu-gb
。point_in_time_recovery_deployment_id
(必填):源部署的 ID(也称为 CRN)。point_in_time_recovery_time
:备份恢复到的时间点,格式为%Y-%m-%dT%H:%M:%SZ
,例如2024-05-10T08:15:00Z
。 留空此字段可获取最新的可恢复点。version
:数据库版本,例如"6.0"。 如果要使用首选的最新版本,请将该字段留空。key_protect_key
:使用的 Key Protect 资源的 ID(CRN)。 此字段为可选项,用于 BYOK(自带密钥)加密。members_host_flavor
:要部署的实例主机大小。 如果不提供,创建的新实例将使用与源实例相同的 RAM 和 CPU。 有关可用值,请参见 table。
示例
ibmcloud resource service-instance-create big-mongo-restore databases-for-mongodb enterprise eu-gb -p '{"point_in_time_recovery_deployment_id":"crn:v1:bluemix:public:databases-for-mongodb:eu-gb:a/f19c0f5eff94b69ae419xyz2345ra7a0ed:3c647ad1-b9a8-2233-a47e-668d8b83e79f::", "members_host_flavor":"b3c.4x16.encrypted", "point_in_time_recovery_time":"", "version":""}'
使用 API 进行恢复
资源控制器支持供应数据库部署,供应和复原由资源控制器 API 负责。 您需要先完成 使用资源控制器 API 的必要步骤,然后才能将其用于从备份复原。
拥有所有信息后,创建请求是对 /resource_instances
端点的 POST
。
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<SERVICE_INSTANCE_NAME>",
"target": "<REGION>",
"resource_group": "<YOUR-RESOURCE-GROUP>",
"resource_plan_id": "<SERVICE-ID>",
"parameters": {
"point_in_time_recovery_time":"<TIMESTAMP>",
"point_in_time_recovery_deployment_id":"<DEPLOYMENT_ID>"
}
}'
以下字段均为必填字段:
name
:要部署的新实例的可读名称,如new-mongo
。resource_group
:资源组的 ID,例如5c49eabc12fgt65
resource_plan_id
:在这种情况下,这是databases-for-mongodb-enterprise
target
:部署新数据库的 IBM Cloud区域,例如eu-gb
。 除了将eu-de
备份还原到另一个区域外,支持跨区域还原。
此外,parameters
对象还可以提供以下字段:
point_in_time_recovery_deployment_id
:源部署的 ID(也称为 CRN)。point_in_time_recovery_time
:备份恢复到的时间点,格式为%Y-%m-%dT%H:%M:%SZ
,例如2024-05-10T08:15:00Z
。 留空此字段可获取最新的可恢复点。version
:数据库版本,例如"6.0"。 如果要使用首选的最新版本,请将该字段留空。key_protect_key
:使用的 Key Protect 资源的 ID(CRN)。 此字段为可选项,用于 BYOK(自带密钥)加密。members_host_flavor
:要部署的实例主机大小。 如果不提供,创建的新实例将使用与源实例相同的 RAM 和 CPU。 有关可用值,请参阅 table。
时间点恢复时间戳记的格式必须如下所示: %Y-%m-%dT%H:%M:%SZ
。
使用 Terraform 复原备份
在复原之前,请确保 point_in_time_recovery_time
不超过一周。 如果时间戳记早于 7 天,那么向下到第二天,验证将失败。
使用 ibm_database_point_in_time_recovery
数据源通过 point_in_time_recovery
复原数据库实例。
时间点恢复时间戳记的格式必须如下所示: %Y-%m-%dT%H:%M:%SZ
。
您的 Terraform 脚本如下所示。
terraform {
required_providers {
ibm = {
version = "1.44.3"
source = "IBM-Cloud/ibm"
}
}
}
variable "ibmcloud_api_key" {
description = "<Enter your IBM Cloud API Key>"
}
provider "ibm" {
region = "us-south"
ibmcloud_api_key = var.ibmcloud_api_key
}
data "ibm_resource_group" "default_group" {
is_default = true
}
resource "ibm_database" "mongodb_enterprise" {
resource_group_id = data.ibm_resource_group.default_group.id
name = "testing-mongodb-pitr"
service = "databases-for-mongodb"
plan = "enterprise"
location = "us-south"
point_in_time_recovery_deployment_id = "<crn>"
point_in_time_recovery_time = "2022-09-14T14:47:45Z"
}
上述操作将还原到一个新数据库,其主机大小和磁盘大小与源数据库相同。 如果要修改部署的主机大小或磁盘大小,请参阅 Terraform 文档,了解正确的格式。
时间点恢复 (PITR) 离线恢复
IBM Cloud® Databases for MongoDB Enterprise Edition 需要两个进程来启动复原。 首先,生成 Ops Manager AppDB的快照。 然后,此快照充当 PITR 备份,可用于复原数据库。
在某些 灾难恢复服务或工作负载从罕见重大事故和大规模故障(如服务中断)中恢复的能力。 这包括影响整个地区的自然灾害、数据库损坏或导致工作负荷增加的服务中断。 这种影响超出了高可用性设计所能承受的范围。场景中,PITR 流程可能会失败。 在这种情况下,Databases for MongoDB Enterprise Edition 可使用时间点恢复(PITR)离线还原来还原到最新的可用快照。 在快照方法无法按预期工作的情况下,“脱机复原”选项可确保数据可用性和系统弹性。
通过用户界面进行时间点恢复 (PITR) 离线恢复
通过 IBM Cloud 仪表板启动脱机复原,就像针对标准 PITR 一样。 选择第三个时间点恢复选项。
通过 CLI 进行时间点恢复 (PITR) 离线还原
使用如下命令通过 IBM Cloud CLI 启动脱机复原:
ibmcloud resource service-instance-create big-mongo-restore databases-for-mongodb enterprise eu-gb -p '{"point_in_time_recovery_deployment_id":"crn:v1:bluemix:public:databases-for-mongodb:eu-gb:a/f19c0f5eff94b69ae419xyz2345ra7a0ed:3c647ad1-b9a8-2233-a47e-668d8b83e79f::", "members_host_flavor":"b3c.4x16.encrypted", "point_in_time_recovery_time":"", "version":"", "offline_restore": true}'
指定下列参数:
point_in_time_recovery_deployment_id
-这是源 CRN。point_in_time_recovery_time
- 留空,""
。offline_restore
- 将此值设为true
。
命令输出如下所示:
Creating service instance <INSTANCE_NAME> in resource group Default of account <ACCOUNT> as <USER>...
OK
Service instance <INSTANCE_NAME> was created.
Name: <INSTANCE_NAME>
ID: crn:v1:bluemix:public:databases-for-mongodb:eu-gb:a/f19c0f5eff94b69ae419xyz2345ra7a0ed:3c647ad1-b9a8-2233-a47e-668d8b83e79f::
GUID: 3c647ad1-b9a8-2233-a47e-668d8b83e79f
Location: <LOCATION>
State: provisioning
Type: service_instance
Sub Type: Public
Service Endpoints: public
Allow Cleanup: false
Locked: false
Created at: 2023-08-03T09:36:37Z
Updated at: 2023-08-03T09:36:41Z
Last Operation:
Status create in progress
Message Started create instance operation
时间点恢复时间戳记的格式必须如下所示: %Y-%m-%dT%H:%M:%SZ
。
通过应用程序接口进行时间点恢复(PITR)离线还原
资源控制器支持供应数据库部署,供应和复原由资源控制器 API 负责。 在使用资源控制器 API 从备份复原之前,请完成 使用该 API 的必要步骤。
在获得所有信息之后,创建请求是对 /resource_instances
的 POST
,如下所示:
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<SERVICE_INSTANCE_NAME>",
"target": "<REGION>",
"resource_group": "<YOUR-RESOURCE-GROUP-ID>",
"resource_plan_id": "<SERVICE-ID>",
"parameters": {
"point_in_time_recovery_time":"<TIMESTAMP>",
"point_in_time_recovery_deployment_id":"<DEPLOYMENT_ID>",
"offline_restore": true
}
}'
指定下列参数:
point_in_time_recovery_deployment_id
-这是源 CRN。point_in_time_recovery_time
- 留空,""
。offline_restore
- 将此值设为true
。
时间点恢复时间戳记的格式必须如下所示: %Y-%m-%dT%H:%M:%SZ
。