从友商迁移数据至腾讯云 ES

数据备份

1、阿里云上创建 oss 存储桶

2、源 es 上创建镜像备份仓库

代码语言:javascript
复制
PUT _snapshot/my_backup/
{
    "type": "oss",
    "settings": {
        "endpoint": "http:/xxx.aliyuncs.com", // oss 的 Endpoint 地址
        "access_key_id": "xxxx", // 用户秘钥,可通过控制台右上角的头像获取——“AccessKey 管理”
        "secret_access_key": "xxxxxx", // 同上
        "bucket": "xxxxxx", // bucket name,创建 bucket 时的命名
        "compress": true, // 是否压缩源数据大小
        "chunk_size": "500mb", // 数据分块大小
        "base_path": "snapshot/" // 仓库起始路径
    }
}

3、根据备份仓库创建快照

代码语言:javascript
复制
PUT _snapshot/shani_backup1/snapshot_1

查看快照信息

代码语言:javascript
复制
PUT _snapshot/shani_backup1/snapshot_1

4、查看 oss,可发现刚刚完成备份的快照

数据迁移

使用腾讯云提供的传输工具,将存储在阿里云 oss 中的镜像传输至腾讯云 cos

当前腾讯云支持的对象存储迁移源有如下几家:

代码语言:javascript
复制
阿里云 OSS
UCloud UFile
七牛云 KODO
百度云 BOS
金山云 KS3
腾讯云 COS
URL列表
AWS S3中国区
AWS S3国际站
华为云 OBS

1、进入对象存储迁移,创建一个任务,填写迁移信息

2、发起迁移,任务成功完成。数据迁移的耗时除了考虑数据量大小,还需要考虑地域

3、查看腾讯云 cos,快照数据已迁移过来

数据恢复

1、在腾讯云的(目标)集群中创建一个备份仓库,注意:"bath_path"

代码语言:javascript
复制
PUT _snapshot/my_cos_backup
{
    "type": "cos",
    "settings": {
        "app_id": "125xxx742",
        "access_key_id": "AKxxxxxxxxxxxg3tg",
        "access_key_secret": "hCwxxxxxxxxxxxxaqrc",
        "bucket": "shanies",
        "region": "ap-guangzhou",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "/snapshot1"
    }
}

2、创建快照,并查看快照状态

代码语言:javascript
复制
PUT _snapshot/my_cos_backup/snapshot_1

GET _snapshot/my_cos_backup/snapshot_1

3、从快照中恢复数据,注意:在源集群中全量备份数据,恢复的时候,会有索引冲突的现象

可选择恢复指定索引

代码语言:javascript
复制
POST /snapshot/my_cos_backup/snapshot_1/restore
{
"indices": "shakespeare",
"rename_pattern": "index
(.+)",
"rename_replacement": "restored_index
$1"
}

目标集群中可看到这个索引已存在

注意:ES 的数据可以跨小版本恢复,但仅支持向前兼容,也就是低版本集群的数据可以恢复至高版本集群,但高版本集群的数据不可以恢复至低版本。

快照原理

es 的快照是基于 Lucene 实现,Lucene 快照针对的都是最后一个提交点的快照,没有增量概念,每一次都是全量快照,并且与快照相关的物理文件都不会删除;es 则负责数据拷贝、仓库管理、增量备份以及快照删除。主要流程:客户端请求——>协调节点(解析请求,并将结果封装发给主节点)——>主节点(广播请求)——>数据节点(将备份文件 copy 至仓库,并在 copy 完成后删除无用文件)

备份目录