前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「Bi Fang」Solr to ES 迁移工具使用指导

「Bi Fang」Solr to ES 迁移工具使用指导

原创
作者头像
岳涛
发布2024-09-30 16:13:44
1320
发布2024-09-30 16:13:44
举报
文章被收录于专栏:大数据生态

说明

Bi Fang(毕方) 是为 Linux 开发的 Solr to ES 数据同步工具,并在 Centos 和 Ubuntu 上进行了积极测试。

✧ 本工具当前版本有以下限制:

  • solr collections 务必有主键;
  • solr collections 务必有时间增量字段;
    • 时间自增字段需为标准 ISO 8601 格式,样式为 "2024-05-20T22:37:41.474Z";
    • 由于本工具 checkpoint 是基于时间戳最小粒度进行滚动而实现的时序翻页,所以时间自增字段需精确到毫秒,否则可能会有性能问题;
    • 为避免遗漏增量数据,采用闭区间滚动,每次滚动包含边界;
  • 同步速率理论值为2000~12000/s;
  • 为保证集群稳定性,默认限制了生产队列上限为2,每个队列最多存储10000条;
  • 如 solr 端历史数据发生改变,则无法增量同步至ES;

✧ 本工具有以下特点:

  • 以 Service 风格启停;
  • 高效时序翻页;
  • 支持断点续传;
  • 支持预估迁移耗时;
  • 支持观测迁移速率、趋势、进度;
  • 引入生产者-消费者独立线程模式,在密集时序场景下可以提升同步效率;
  • 支持观测每个 batch 的同步耗时(需开启 debug);
  • 支持修改 checkpoint 位点进行补数,适用于因为网络抖动等原因导致丢数的问题;
  • 支持高效 checksum,精准定位数据条数不一致的最小时间区间。配合修改 checkpoint 能力,可实现精准补数;
  • 由于 solr 的排序以及游标能力在大数据规模下可以轻易使 solr 集群瞬间崩溃,所以本工具未引入 solr 这两个能力,从而保障集群稳定性;

工具适用场景

● Solr 时序数据,需要同步至 ES 集群,并且有增量同步 & 断点续传的需求;

1. 准备工作

● 服务器准备

准备一台可以访问 Solr 及 ES 实例的服务器,其网络环境应该是互通的;

2. 执行方式

2.1. 一键安装

Centos

代码语言:javascript
复制
rpm -vih https://tools-release-1314567.cos.ap-shanghai.myqcloud.com/elasticsearch/packages/bifang-lastest.x86_64.rpm

Ubuntu

代码语言:javascript
复制
wget https://tools-release-1314567.cos.ap-shanghai.myqcloud.com/elasticsearch/packages/bifang-lastest.amd64.deb -O /tmp/ems.deb && sudo dpkg -i /tmp/ems.deb

安装完成后会生成 bifang 命令:

代码语言:javascript
复制
bifang -v
bifang -h

2.2. 参数说明

代码语言:javascript
复制
  -h, --help                                查看帮助
  -f/--config_file xx.ini                   指定 ini 配置文件
  -s/--service {start,stop,restart,status}  服务控制命令
  -i INDEX, --index INDEX                   查看指定索引同步状态
  --checksum                                校验不一致的时序数据
  -v/--version                              查看版本

2.3. 配置文件示例

服务安装成功之后,需要准备一个 ini 配置文件。

注意:configs 文本头不可删除,ini 文件的格式需符合 ini 配置文件标准

代码语言:javascript
复制
[configs]
solr_url = http://10.10.10.x:8981/solr
es_url = http://10.10.10.x:9200
es_user = elastic
es_password = ******
collections = collection_1,collection_2,collection_3
primary_key = id
delta_field = update_time
bulk_size = 10000
delta_interval = 1m
log_level = DEBUG

配置解释:

代码语言:javascript
复制
solr_url           solr url,形式需为 http://10.10.10.x:8981/solr
es_url             es url,形式需为 http://10.10.10.x:9200
es_user            es 用户名
es_password        es 密码
collections        solr collections,以英文逗号间隔,逗号间不可有空格
primary_key        solr collection 主键
delta_field        自增时间字段,需为 date、tdate、pdate 类型之一
bulk_size          批次大小
delta_interval     增量检测间隔
log_level          日志级别

2.4. 执行示例

启动服务

代码语言:javascript
复制
bifang -f bifang.ini -s start

返回样式如下:

停止服务

代码语言:javascript
复制
bifang -s stop

返回样式如下:

重启服务

代码语言:javascript
复制
bifang -f bifang.ini -s restart

返回样式如下:

查看所有 index 同步状态

代码语言:javascript
复制
bifang -f bifang.ini -s status

返回样式如下:

查看指定 index 同步状态

代码语言:javascript
复制
bifang -f bifang.ini -s status -i collection_1

返回样式如下:

校验数据

代码语言:javascript
复制
bifang -f bifang.ini --checksum

返回样式如下:

● 如发现数据不一致的时间区间,则会打印出相应区间并标识该区间两端的数据条数。

● 如发现 ES 数据条数超过了 Solr,则以 Solr 端的时间区间为准进行 checksum,如 Solr 端的时间区间内两端的数据一致,则认为数据一致。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 1. 准备工作
  • 2. 执行方式
    • 2.1. 一键安装
      • 2.2. 参数说明
        • 2.3. 配置文件示例
          • 2.4. 执行示例
            • ➢ 启动服务
            • ➢ 停止服务
            • ➢ 重启服务
            • ➢ 查看所有 index 同步状态
            • ➢ 查看指定 index 同步状态
            • ➢ 校验数据
        相关产品与服务
        Elasticsearch Service
        腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档