升级到新主版本
IBM Cloud® Databases for Elasticsearch 提供两种不同的升级路径:
- 就地升级到新的主版本(支持 Elasticsearch 企业计划和 Elasticsearch 白金计划)。
- 从备份恢复(支持 Elasticsearch 企业计划和 Elasticsearch 白金计划)。
就地主要版本升级
就地主要版本升级可以将部署升级到下一个新的 主要版本,无需将 备份恢复 到新的部署中。 这种方法可以保持相同的连接字符串,无需重新配置部署。 但是,如果新的主要版本需要对应用程序进行调整,则必须加以解决。
在就地主要版本升级窗口期间(包括备份),部署被设置为只读模式,只允许对部署进行读操作,不允许写操作,以确保安全升级。 作为该托管服务就地升级的正常部分,预计会出现短暂的数据库不可用的情况。 一旦部署的主要版本升级完成,“只读”模式就会取消。
在执行就地主要版本升级时,有两种选择:
-
带备份的就地主要版本升级:此路径在执行实际升级前创建备份,提供额外的安全保障( Elasticsearch 白金计划的唯一选项)。
-
无备份的就地主要版本升级:该选项在不创建备份的情况下进行升级。 如果就地升级不成功,则需要将部署从最新备份还原到新部署中。
不建议在没有备份的情况下就地升级。 如果升级在任何阶段失败,都可能导致数据丢失,因为没有即时备份可用于恢复。
准备工作
在启动升级程序之前,请考虑以下几个方面。
- 升级前,您的部署必须处于健康状态。
- 您的部署必须至少有 2 GB 可用磁盘空间。
- 您只能升级到下一个主要版本,而不是指定您选择的版本。
- 每个主要版本都包含一些可能无法向后兼容以前版本的功能。 查看数据库供应商提供的 发行说明,了解可能影响应用程序的任何更改。
- 不支持将部署降级到以前的版本。
- 就地主要版本升级一旦开始就不能取消。
- 对于 Elasticsearch 白金版,升级前必须至少有一个可用备份,以确保升级后可以进行备份。
在 UI 中升级
-
创建一个新的 Databases for Elasticsearch 来测试升级过程。
从版本相同的现有部署中 恢复备份,创建部署。 -
将暂存应用程序指向测试部署。
更新暂存应用程序,使其指向测试部署。 确认测试应用程序可以成功连接到暂存部署,并且应用程序的运行符合预期。 对暂存环境进行所需的性能和运行测试。 -
单击“概览”页面上的“升级主要版本”按钮,升级测试部署的主要版本。
升级过程完成后,数据库将进入“只读”模式。 注意升级需要多长时间才能完成,这样就可以使用升级过期设置将升级控制在维护窗口内。 -
确认您的暂存应用程序可与新数据库版本配合使用。
如果应用程序正常运行,这一步将确认升级生产数据库是安全的。 -
将生产数据库部署升级到新版本。
一旦确认使用新版本的数据库可以正常运行应用程序,就可以返回管理控制台,开始升级生产部署。 在 “概览”页面的“部署详情”部分,单击“升级主要版本”按钮并按步骤操作。就地升级程序一旦启动,就无法停止或回滚。 因此,万一发生错误,您的数据库部署可能无法恢复。 因此,请创建一个备份,然后将其还原到新的部署中。 如果选择“带备份的就地主要版本升级”,创建的备份可用于在新部署中还原。
expiration for starting upgrade 允许您配置一个“超时”时间段,升级任务必须在该时间段内启动才会自动取消。 此外,还要在暂存阶段提前测试升级,以确保在所需的时间窗口内完成升级。 例如,如果您想在 1 小时内完成升级,而您测试过升级并知道升级需要 30 分钟,那么您的升级任务必须在您确认要升级后的 30 分钟内启动。 因此,请将过期时间设置为 30 分钟,这样,如果在这段时间内没有启动,就不会占用您的窗口。
通过应用程序接口升级
使用以下命令进行就地升级:
curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{"version": "8.0"}'
expiration for starting upgrade 允许您配置一个“超时”时间段,升级任务必须在该时间段内启动才会自动取消。 此外,还要在暂存阶段提前测试升级,以确保在所需的时间窗口内完成升级。 例如,如果您想在 1 小时内完成升级,而您测试过升级并知道升级需要 30 分钟,那么您的升级任务必须在您确认要升级后的 30 分钟内启动。 因此,将过期时间设置为 30 分钟后的时间戳,这样如果它没有在这段时间内启动,就不会超出您的窗口。 过期时间必须在
5 分钟(默认)到 24 小时之间。 更多信息,请参阅 Cloud Databases API。
通过 CLI 升级
在 CDB 插件版本 >= 中可用 0.20.0
要查看部署允许的升级和还原转换列表,请执行以下操作
ibmcloud cdb deployment-capability-show <NAME|CRN> versions
使用所需参数升级命令:
ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>
要查看命令参数的全部详细信息:
ibmcloud cdb deployment-version-upgrade --help
expiration for starting upgrade 允许您配置一个“超时”时间段,升级任务必须在该时间段内启动才会自动取消。 此外,还要在暂存阶段提前测试升级,以确保在所需的时间窗口内完成升级。 例如,如果您想在 1 小时内完成升级,而您测试过升级并知道升级需要 30 分钟,那么您的升级任务必须在您确认要升级后的 30 分钟内启动。 因此,请将过期时间设置为 30 分钟,这样,如果在这段时间内没有启动,就不会占用您的窗口。 过期时间必须在
5 分钟(默认)到 24 小时之间。 有两种方法可以使用 CLI --expire-in 或 --expire-at 设置过期时间。 如需了解更多信息,请参阅该命令的帮助文档。
通过 Terraform 进行升级
适用于 Terraform 提供程序版本 >= 1.79.2
要升级,只需在配置中添加或更改 version 值即可。 还有一个可选的 bool 标志 version_upgrade_skip_backup,可以设置为跳过备份。
不建议跳过备份。 在版本升级前不进行备份是很危险的,可能会导致数据丢失。 如果升级在任何阶段失败,都没有即时备份可还原。
升级期间,数据库将进入“只读”模式。 强烈建议在升级前进行测试。
升级可能需要比默认超时更长的时间。 可以使用 timeouts 属性设置更长的超时值。
Terraform 有超时而不是过期时间戳。 因此,请增加超时时间,因为超时更新值会被用作过期时间。 例如,如果设置超时 20 分钟,过期时间将被设置为 20 分钟,如果在该时间段内没有开始升级,则过期时间将被设置为 20 分钟,升级将不会开始。 请注意,最长过期时间为 24 小时,因此即使设置了 36 小时的超时时间,如果在 24 小时内没有开始升级,升级也会过期。
如果正在进行升级,请注意某些任务可能处于排队状态,在版本升级完成之前不会继续执行。
故障诊断
健康检查
如果服务实例资源不足,任务就会失败,因为在这种情况下无法保证安全升级。 资源消耗可通过 监控集成 进行评估。 如果不是所有数据库组件都可以升级,升级任务就会失败。
在开始 Elasticsearch 升级之前,必须验证群集是否有足够的资源并处于健康状态。 确保群组健康状态为绿色。 确认磁盘使用率低于 85%,以避免因空间不足而导致升级失败。 执行二级预检,检测群集中的弃用情况。 如果发现弃用,升级过程将停止,必须在所有问题都得到解决后才能重试。
这个问题可能是由于维护或数据库使用造成的。 因健康检查失败而失败的任务可以稍后重试。 如果任务持续失败,请向 IBM Cloud 支持中心 提交支持票据。
从备份复原
在数据库的主要版本达到生命周期终点(EOL)之前,通过将备份恢复到新的数据库实例,升级到下一个可用的主要版本。
准备在 EOL 日期前运行并迁移到最新版本。 更多信息,请参阅 版本控制政策。
不支持版本回滚。
升级到 Elasticsearch 可用的最新版本 Databases for Elasticsearch。 从目录页面、Cloud Databases CLI 插件命令或 API 查找最新版本。ibmcloud cdb deployables-show或
Cloud Databases API /deployables 端点。
通过将数据的备份 复原 到新部署来处理升级。 从备份恢复有各种优势:
- 原始数据库保持运行,并且可以不中断生产工作。
- 可以在生产环境外部测试新数据库,并对任何应用程序不兼容性采取行动。
- 整个过程可以在任何时候重新运行。
- 进行一次全新的还原操作,可以降低旧版本数据库中不必要的残留数据被带入新数据库的可能性。
升级路径
| 当前版本 | 主要版本升级路径 |
|---|---|
| Elasticsearch 8.10 | Elasticsearch 8.19 |
| Elasticsearch 8.12 | Elasticsearch 8.19 |
| Elasticsearch 8.15 | Elasticsearch 8.19 |
| Elasticsearch 8.19 | Elasticsearch 9.1 |
在 UI 中升级
对于新的托管模式(隔离计算和共享计算),可通过 CLI 和 API 升级到新的主版本。
您可以从 IBM Cloud 控制台部署的“备份和还原”页面 恢复备份,升级到新版本。 单击“在备份上恢复备份”在新标签页中打开一个页面,您可以在此更改新部署的一些选项。 其中之一是数据库版本,它会自动填充可供您升级的版本。 选择一个版本,然后单击“还原备份”开始配置和还原过程。
通过 CLI 升级
当您通过 IBM Cloud CLI 从备份升级和恢复时,请使用资源控制器上的调配命令。
ibmcloud resource service-instance-create <INSTANCE_NAME> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION>
参数 instance_name, service_id, service_plan_id,和 region 都是必需的。 您还可以在一个 JSON 对象中为 -p 提供版本和备份 ID 参数。 新部署的大小会自动调整为与备份时源部署相同的磁盘和内存。
ibmcloud resource service-instance-create example-upgrade databases-for-elasticsearch enterprise us-south \
-p \ '{
"backup_id": "crn:v1:bluemix:public:databases-for-elasticsearch:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":"8.0"
}'
通过应用程序接口升级
与通过 API 进行配置类似,您必须先完成 使用资源控制器 API 的必要步骤,然后才能使用它从备份升级。 然后,向 API 发送 POST 请求。 参数 name, target,
resource_group,和 resource_plan_id 都是必需的。 同时提供版本和备份 ID。 新部署的内存和磁盘分配与备份时的源部署相同。
curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_instances -H 'Authorization: Bearer <>' -H 'Content-Type: application/json' -d '{
"name": "my-instance",
"target": "us-south",
"resource_group": "5g9f447903254bb58972a2f3f5a4c711",
"resource_plan_id": "databases-for-elasticsearch-enterprise",
"backup_id": "crn:v1:bluemix:public:databases-for-elasticsearch:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
"version":"8.0"
}'
通过 Terraform 进行升级
使用 Terraform 将备份从旧版本还原到新版本。
代码如下
resource "ibm_database" "<your-instance>" {
name = "<your_database_name>"
service = "databases-for-elasticsearch"
plan = "enterprise"
location = "<region>"
version = "<version>"
backup_id = "<backup_id>"
}
更多信息,请参阅 Cloud Databases Terraform 注册表。 另外,也可以使用 Terraform IBM Modules(TIM) 从备份实例创建新的数据库实例。 更多信息,请参阅 从备份恢复示例。