IBM Cloud Docs
使用快照和复原的 Elasticsearch 数据迁移

使用快照和复原的 Elasticsearch 数据迁移

在 Object Storage的帮助下,在两个 Elasticsearch 实例之间迁移数据。 使用快照和复原方法,从源实例获取快照,将其存储在 Object Storage中,然后将这些快照从 Object Storage 复原到目标实例中。

本教程使用快照和复原 IBM Cloud Object Storage 以及两个 Databases for Elasticsearch实例。 但是,此过程适用于任何 S3-compatible 对象存储解决方案以及 Elasticsearch的任何部署。

我们已通过使用 Terraform 和 shell 脚本来简化此过程。 只需遵循此页面上概述的过程,随时随地插入必要的变量。

如果要使用快照和复原过程从 Elasticsearch 7.9/7.10 升级到 V 7.17,那么必须将套餐从 Standard 更改为 Enterprise。 通过在要复原的备份上的“供应”页面上单击 复原 来更改计划,然后从下拉菜单中选择 7.17。

提高生产力

在迁移数据之前,请安装 Terraform 以编码和部署必需的基础结构。 您还需要 IBM Cloud 帐户

步骤 1: 获取 IBM Cloud API 密钥并克隆 GitHub 存储库

执行 这些步骤 以创建 IBM Cloud API 密钥,该密钥使 Terraform 能够在您的帐户中供应基础结构。 您最多可以创建 20 个 API 密钥。

出于安全原因,API 密钥仅在创建时才可复制或下载。 如果 API 密钥丢失,必须创建新的 API 密钥。

接下来,将 Elasticsearch 快照/复原 GitHub 存储库 克隆到本地计算机。

git clone https://github.com/IBM/elasticsearch-cos-snapshot-restore.git

克隆此文件夹后,请浏览至本地机器上新创建的项目文件夹。

步骤 2: 安装并运行 Terraform 脚本

terraform 文件夹 包含用于创建必要的基础结构以创建和复原快照的文件:

cos.tf

cos.tf 创建 Cloud Object Storage 实例和存储区。 更新 restoreCOSInstancerestoreBucketresourceKey 的资源。然后,此脚本将输出 bucket_credentialsbucket_name

elastic.tf

elastic.tf 创建源配置,目标配置和必需配置。 输入 resource "ibm_database" "esSource"resource "ibm_database" "esTarget" 的变量。 然后,此脚本会输出必需的配置变量。

main.tf

main.tf 包含模块的主配置集。 对于 ibmcloud_api_key 变量,创建或检索 IBM Cloud® API 密钥。 然后,指定资源组和 ibm_resource_group 变量,这将输出 resource_group_name

variables.tf

variables.tf 包含变量定义 ibmcloud_api_keyregionelastic_password。 使用 API 密钥,首选区域和 Elasticsearch 密码更新这些变量。

设置资源,配置和变量后,继续运行 Terraform 脚本。 导航至 terraform 文件夹,使用以下命令安装基础架构:

terraform init
terraform apply --auto-approve

Terraform 脚本输出运行应用程序所需的配置数据,因此将其复制到根文件夹中:

terraform output -json >../config.json

步骤 3: 运行 shell 快照脚本

运行主项目文件夹中的 migrate.sh 文件。 此 shell 脚本使用 config.json 文件提供的信息来执行必要的迁移步骤。

  • 通过添加时间戳记来创建不同的快照名称。
  • 获取数据库和 S3/COS 参数。
  • 在源部署上安装 S3/COS 存储区。
  • 在目标部署上安装 S3/COS 存储区。
  • 关闭目标上的所有索引,以便可以在不接触受 Cloud Databases保护的 icd-auth index 的情况下运行复原。

根据需要多次运行 migrate.sh 以完全备份数据。

快照是增量快照,因此第一个快照的时间比其余快照长。

一旦 COS 存储区具有所有必需的快照,请停止对源的任何写入。 然后,再运行一次 migrate.sh,以生成最终快照并将其复原到目标。 现在,所有数据都在目标中。 将应用程序指向目标数据库,并且升级已完成。

检索和更新用户密码

如果要复原到 Elasticsearch 7.17 作为较早版本的更新,那么现有用户密码将失效,并且必须在复原后重置。 有关更多信息,请参阅 检索和更新用户密码