如果您需要将源端ES中的角色、用户或可视化大盘的相关信息复制到目标端ES中使用,可以通过手动备份和恢复快照的方式实现。
前提条件
已开通对象存储 OSS(Object Storage Service),并新建一个标准存储类型的Bucket,且Bucket的地域与ES实例的地域保持一致。具体操作,请参见开通OSS服务和创建存储空间。
创建2个阿里云ES实例。一个ES作为源端,一个ES作为目标端,ES不同版本之间恢复快照的兼容性,请参见Index compatibility。
说明8.x和7.x版本ES快照恢复有差异,本文以7.10版本ES实例之间的恢复和8.5版本ES实例之间的恢复为例。
ES不同版本之间恢复快照的兼容性,请参见Index compatibility。
注意事项
本文中的代码均可以在阿里云ES实例的Kibana控制台上执行。
在ES 8.0及以上版本中,features是备份和恢复系统索引和系统数据流的唯一方式。详细信息,请参见Snapshot and restore。
迁移Elasticsearch角色和用户
步骤一:准备环境
在源端ES实例中登录Kibana控制台。具体操作,请参见登录Kibana控制台。
创建角色
cj_test_role
和一个用户kara
,并为该用户分配cj_test_role
角色。具体操作,请参见通过Elasticsearch X-Pack角色管理实现用户权限管控。
步骤二:备份快照数据
登录源端ES实例的Kibana控制台。具体操作,请参见登录Kibana控制台。
在源端ES实例中创建一个名称为
my_backup
的仓库。云上集群创建仓库。
PUT _snapshot/my_backup/ { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "xxxx", "secret_access_key": "xxxxxx", "bucket": "xxxxxx", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
8.x版本自建集群创建仓库,需要安装elasticsearch-repository-oss插件。具体操作,请参见安装elasticsearch-repository-oss插件。
说明关于该插件的详细信息,请参见elasticsearch-repository-oss。
PUT /_snapshot/my_backup { "type": "oss", "settings": { "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com", "oss.client.access_key_id": "xxx", "oss.client.secret_access_key": "xxx", "oss.client.bucket": "xxxxxx", "oss.client.base_path":"snapshot/", "oss.client.compress": true } }
参数
说明
endpoint
OSS Bucket的内网访问域名。获取方式,请参见访问域名和数据中心。
access_key_id
用于标识用户。获取方式,请参见获取AccessKey。
secret_access_key
用于验证用户的密钥。获取方式,请参见获取AccessKey。
bucket
OSS Bucket的名称,需要一个已经存在的Bucket。获取方式,请参见控制台创建存储空间。
compress
打开快照文件的压缩功能:
true:打开压缩功能,仅应用于元数据文件(索引映射和设置)。
false(默认值):不打开压缩功能,数据文件未压缩。
chunk_size
当您上传的数据非常大时,配置此参数可以限制快照过程中分块的大小。超过这个大小,数据将会被分块上传到OSS中。
base_path
仓库的起始位置,默认为根目录。可以指定具体快照的存放目录,例如snapshot/myindex/。
源端ES实例中创建快照。
执行如下命令,在ES 7.10版本实例中创建快照
snapshot_1
。说明ES 7.10版本角色、用户通过系统索引
.kibana*
,.security*
管理。ES 7.10版本创建快照命令中参数解析,请参见Restore snapshot API。
PUT _snapshot/my_backup/snapshot_1 { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": true }
执行如下命令,在ES 8.5版本实例中为角色和用户相关的索引创建快照
snapshot_1
。说明ES 8.5版本创建快照命令中参数解析,请参见Create snapshot API。
PUT _snapshot/my_backup/snapshot_1 { "indices": "-*", "ignore_unavailable": true, "include_global_state": true, "feature_states": [ "security" ] }
确认成功创建快照。例如,执行如下命令,获取
my_backup
仓库中快照snapshot_1
的详细信息。GET _snapshot/my_backup/snapshot_1
步骤三:恢复快照数据
登录目标端ES实例的Kibana控制台。具体操作,请参见登录Kibana控制台。
在目标端ES实例中创建一个名称为
my_restore
的仓库。PUT _snapshot/my_restore { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
将源端ES实例中的快照恢复到目标端ES实例中。
ES为7.10版本,在目标端进行如下操作恢复快照。
说明7.10及以下版本在恢复快照前需要先关闭目标端的系统索引
.kibana*
和.security*
,并在恢复快照后尽快开启被关闭的系统索引。关闭系统索引可能会导致Elasticsearch实例功能不可用或受限。例如,关闭
.kibana
可能导致Kibana无法使用;关闭.security
可能导致安全功能受限。建议您提前备份数据,以便在需要时进行恢复。
建议在目标端ES的业务低峰期或停止服务时操作。
如果Kibana控制台不能关闭这些索引,建议通过终端操作。具体操作,请参见管理Elasticsearch的curl命令。
关闭目标端系统索引
.kibana*
和.security*
。POST /<index name>/_close
恢复源端快照。
POST /_snapshot/my_restore/snapshot_1/_restore { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": false }
开启目标端系统索引
.kibana*
和.security*
。POST /<index name>/_open
ES为8.5版本,在目标端执行如下代码恢复快照
snapshot_1
。POST _snapshot/my_restore/snapshot_1/_restore { "feature_states": [ "security" ], "include_global_state": false, "indices": "-*" }
验证角色和用户是否迁移成功。
在页面左上角,选择
。在左侧菜单栏,选择
,可以看到已经将源端中角色为cj_test_role
的用户kara
恢复到了目标端ES上。
迁移kibana可视化大盘
步骤一:准备环境
在源端ES实例中登录Kibana控制台。具体操作,请参见登录Kibana控制台。
添加样例数据。
说明以下操作步骤以ES 8.5版本为例,其他版本操作略有不同,以控制台为准。
在Kibana主页,通过添加集成开始使用区域单击试用样例数据。
在样例数据页签,单击其他样例数据集。
单击Sample flight data数据集下的添加数据。
待添加数据变为查看数据时,表示该数据集已添加完成。添加样例数据后,Kibana会自动创建一些相关的可视化。
在Kibana控制台左上角,选择
,在可视化大盘中查看已存在的可视化,例如【航班】到达地天气、【航班】延误与取消等。
步骤二:备份快照数据
登录源端ES实例的Kibana控制台。具体操作,请参见登录Kibana控制台。
在源端ES实例中创建一个名称为
my_backup
的仓库。云上集群创建仓库。
PUT _snapshot/my_backup/ { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "xxxx", "secret_access_key": "xxxxxx", "bucket": "xxxxxx", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
8.x版本自建集群创建仓库,需要安装elasticsearch-repository-oss插件。具体操作,请参见安装elasticsearch-repository-oss插件。
说明关于该插件的详细信息,请参见elasticsearch-repository-oss。
PUT /_snapshot/my_backup { "type": "oss", "settings": { "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com", "oss.client.access_key_id": "xxx", "oss.client.secret_access_key": "xxx", "oss.client.bucket": "xxxxxx", "oss.client.base_path":"snapshot/", "oss.client.compress": true } }
参数
说明
endpoint
OSS Bucket的内网访问域名。获取方式,请参见访问域名和数据中心。
access_key_id
用于标识用户。获取方式,请参见获取AccessKey。
secret_access_key
用于验证用户的密钥。获取方式,请参见获取AccessKey。
bucket
OSS Bucket的名称,需要一个已经存在的Bucket。获取方式,请参见控制台创建存储空间。
compress
打开快照文件的压缩功能:
true:打开压缩功能,仅应用于元数据文件(索引映射和设置)。
false(默认值):不打开压缩功能,数据文件未压缩。
chunk_size
当您上传的数据非常大时,配置此参数可以限制快照过程中分块的大小。超过这个大小,数据将会被分块上传到OSS中。
base_path
仓库的起始位置,默认为根目录。可以指定具体快照的存放目录,例如snapshot/myindex/。
源端ES实例中创建快照。
执行如下命令,在ES 7.10版本实例中创建快照
snapshot_2
。说明ES 7.10版本创建快照命令中参数解析,请参见Restore snapshot API。
PUT _snapshot/my_backup/snapshot_2 { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": true }
执行如下命令,在ES 8.5版本实例中为可视化大盘相关的索引创建快照
snapshot_2
。说明ES 8.5版本创建快照命令中参数解析,请参见Create snapshot API。
PUT _snapshot/my_backup/snapshot_2 { "indices": "-*", "ignore_unavailable": true, "include_global_state": true, "feature_states": [ "security","kibana" ]
确认成功创建快照。例如,执行如下命令,获取
my_backup
仓库中快照snapshot_2
的详细信息。GET _snapshot/my_backup/snapshot_2
步骤三:恢复快照数据
登录目标端ES实例的Kibana控制台。具体操作,请参见登录Kibana控制台。
在目标端ES实例中创建一个名称为
my_restore
的仓库。PUT _snapshot/my_restore { "type": "oss", "settings": { "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", "access_key_id": "[your_access_key_id]", "secret_access_key": "[your_secret_access_key]", "bucket": "[your_bucket_name]", "compress": true, "chunk_size": "500mb", "base_path": "snapshot/" } }
将源端ES实例中的快照恢复到目标端ES实例中。
ES为7.10版本,在目标端进行如下操作恢复快照。
说明7.10及以下版本在恢复快照前需要先关闭目标端的系统索引
.kibana*
和.security*
,并在恢复快照后尽快开启被关闭的系统索引。关闭系统索引可能会导致Elasticsearch实例功能不可用或受限。例如,关闭
.kibana
可能导致Kibana无法使用;关闭.security
可能导致安全功能受限。建议您提前备份数据,以便在需要时进行恢复。
建议在目标端ES的业务低峰期或停止服务时操作。
如果Kibana控制台不能关闭系统索引,建议通过终端操作。具体操作,请参见管理Elasticsearch的curl命令。
关闭目标端系统索引
.kibana*
和.security*
。POST /<index name>/_close
恢复源端快照。
POST /_snapshot/my_restore/snapshot_2/_restore { "indices": ".kibana*,.security*", "ignore_unavailable": true, "include_global_state": false }
开启目标端系统索引
.kibana*
和.security*
。POST /<index name>/_open
ES为8.5版本,在目标端执行如下代码恢复快照
snapshot_2
。POST _snapshot/my_restore/snapshot_2/_restore { "feature_states": [ "security","kibana" ], "include_global_state": false, "indices": "-*" }
验证可视化大盘是否迁移成功。
在页面左上角,选择
,查看从源端复用到目标端的可视化。