使用快照和复原的 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 实例和存储区。 更新 restoreCOSInstance
,restoreBucket
和 resourceKey
的资源。然后,此脚本将输出 bucket_credentials
和 bucket_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_key
,region
和 elastic_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 作为较早版本的更新,那么现有用户密码将失效,并且必须在复原后重置。 有关更多信息,请参阅 检索和更新用户密码。