当前位置: 首页 > article >正文

[开源重构]Search(Elasticsearch/OpenSearch) Sync Tool

[开源重构]Elasticsearch/OpenSearch Sync Tool

背景

  • 因为要做集群灾备,需要在主备两个集群之间持续性地同步数据,调查过多个方案:
    • CCR(Cross-cluster replication) 官方工具,可惜需要收费,无奈放弃 😦
    • esm 如官方文档说所,最大的特点. 可惜也发现不少问题:
      • 同步后发现数据不全,一般需要采用多次执行的方式来补全数据;
      • 调查后发现,其采用的是获取源数据后,使用多个 goroutine 将数据通过bulk写入目标index, 会造成目标index重复写入很多相同数据的问题;
      • 更改源码,加入 --sync 功能,通过 scroll 同时查询源和目标index,比较其内容的方式,实现增量更新(Add/Update/Del), 目前该 PR/84 已经合并到esm中。
      • 目前 esm 的作者已经不再维护,因此后来发现的一些bug也很难改善及合并。
      • 从 issue 和 源码来看, esm 不支持 OpenSearch, esm作者以后也不会再更改

更改

  • 对源码进行了更改,对同步(Sync)功能进行了加强,从而满足我在两个集群之间"近"实时同步的需求。
    • 增加 --stamp 参数,如果 index 中有表示最后更新时间的字段,可以进一步减少查询的数据量(本质是利用esm中的 --query 方式,单独提取出来更易于控制)
    • 增加对 OpenSearch 的支持
    • 对已有代码进行了较大的重构,更改了一些bug
    • 编写通用的集群同步脚本 search_sync.sh, 可以按需同步集群中的index,也可以对每月自动生成的 index 进行处理.
    • 为了方便测试,使用 docker-compose 来设置不同版本,不同类型的 源/目标 集群.

注意

  • 目前主要的更改集中在 --sync 上,其他功能测试的不多,有可能会出现问题.

源码位置

  • https://github.com/fishjam/sst

http://www.kler.cn/a/406345.html

相关文章:

  • GESP2023年9月认证C++四级( 第三部分编程题(1-2))
  • 微知-plantuml常用语法和要点以及模板?(note over、create、box,endbox、alt,else,end, autonumber)
  • 深度学习笔记24_天气预测
  • shell编程(8) until循环以及函数基本创建调用
  • 2024年亚太地区数学建模大赛D题-探索量子加速人工智能的前沿领域
  • SOA(面向服务架构)全面解析
  • c++基础语法
  • shell脚本(三)
  • Java教程:SE进阶【十万字详解】(中)
  • 移动语义和拷贝语义的区别以及智能指针
  • 数据结构--并查集
  • 比rsync更强大的文件同步工具rclone
  • 解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
  • 半导体工艺与制造篇5 光刻
  • 40分钟学 Go 语言高并发:并发下载器开发实战教程
  • 「Chromeg谷歌浏览器/Edge浏览器」篡改猴Tempermongkey插件的安装与使用
  • 倒计时功能分享
  • 数据结构-8.Java. 七大排序算法(上篇)
  • Linux 手动升级软件保姆级教程,适用所有软件,不限于麒麟等国产系统
  • 【Golang】协程
  • 迁移学习理论与应用
  • 力扣--LRC 142.训练计划IV
  • Ubuntu ESP32开发环境搭建
  • 五天SpringCloud计划——DAY2之使用Docker完成项目的部署
  • Excel的图表使用和导出准备
  • [面试]-golang基础面试题总结