admin管理员组

文章数量:1487745

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

说明

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代码运行次数:0运行复制
rpm -vih .x86_64.rpm

Ubuntu

代码语言:javascript代码运行次数:0运行复制
wget .amd64.deb -O /tmp/ems.deb && sudo dpkg -i /tmp/ems.deb

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

代码语言:javascript代码运行次数:0运行复制
bifang -v
bifang -h

2.2. 参数说明

代码语言:javascript代码运行次数:0运行复制
  -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代码运行次数:0运行复制
[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代码运行次数:0运行复制
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代码运行次数:0运行复制
bifang -f bifang.ini -s start

返回样式如下:

停止服务

代码语言:javascript代码运行次数:0运行复制
bifang -s stop

返回样式如下:

重启服务

代码语言:javascript代码运行次数:0运行复制
bifang -f bifang.ini -s restart

返回样式如下:

查看所有 index 同步状态

代码语言:javascript代码运行次数:0运行复制
bifang -f bifang.ini -s status

返回样式如下:

查看指定 index 同步状态

代码语言:javascript代码运行次数:0运行复制
bifang -f bifang.ini -s status -i collection_1

返回样式如下:

校验数据

代码语言:javascript代码运行次数:0运行复制
bifang -f bifang.ini --checksum

返回样式如下:

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

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

本文标签: 「Bi Fang」Solr to ES 迁移工具使用指导