数据比较

  • 2024年1月20日
目录

快速开始

  • 创建新配置
level: "info"
elastics:
    source-es5:
        addresses:
            - "http://192.168.1.55:9200"
            - "http://192.168.1.56:9200"
            - "http://192.168.1.56:9200"
        user: "es-user"
        password: "123456"
    source-es8:
        addresses:
            - "http://192.168.1.67:9200"
            - "http://192.168.1.68:9200"
            - "http://192.168.1.69:9200"
        user: "es-user2"
        password: "123456"

tasks:
  - name: compare-task
    source_es: es5
    target_es: es8
    index_pairs:
      -
        source_index: "hello_sample"
        target_index: "sample_123"
    index_pattern: "test_.*"
    force: true
    slice_size: 5
    scroll_size: 5000
    buffer_count: 3000
    action_parallelism: 5
    action_size: 5
    scroll_time: 10
    parallelism: 12
    action: compare
  • 执行命令
./ela --config ./config.yaml --task "compare-task"

详细功能说明

配置

  1. 配置数据比较任务。
配置路径 说明
/tasks/{task-name} 任务名称,用户可以定义多个不同的任务,不同的任务按顺序执行。
/tasks/{task-name}/source_es 数据比较的源 ES
/tasks/{task-name}/target_es 数据比较的目标 ES
/tasks/{task-name}/index_pairs 数据比较的索引对,比较源 ES 中 source_index 的数据与目标 ES 中 target_index 的数据。
/tasks/{task-name}/index_pattern 使用正则表达式指定索引对;比较源 ES 中的索引数据与目标 ES 中同名索引的数据。
/tasks/{task-name}/slice_size 为了加快源和目标 ES 中索引数据的遍历;数据按分片遍历;分片数不宜过大,一般在 20-30 左右;根据源和目标 ES 服务的承载能力设置。slice_size 决定了查询和遍历源和目标 ES 的并发度。
/tasks/{task-name}/scroll_time 遍历数据时游标的有效时间;如果设置太小,游标会过期;默认时间为 10 分钟。
/tasks/{task-name}/scroll_size 遍历数据时一次请求从源和目标 ES 获取的数据量。
/tasks/{task-name}/buffer_count 该参数为文档数量;遍历的数据会放入队列中,该参数用于设置队列的容量;同时也决定了 ela 工具的本地内存消耗。对于数据比较,会有两个队列,分别存储源 ES 和目标 ES,所以最终的缓冲区使用量是 2 * buffer_count。
/tasks/{task-name}/action_parallelism 执行数据比较的 goroutine 并发数。
/tasks/{task-name}/parallelism 数据比较会有很多索引对;该参数用于设置同一任务中有多少个索引对并发比较。
/tasks/{task-name}/ids 该参数不是必须的,主要用于比较索引中指定文档的数据;应该设置为文档 _id 字段的列表,用空格分隔,例如 “abc def cdf”。
/tasks/{task-name}/action 设置为 compare,表示将执行增量数据同步。
  1. 配置数据比较和修复 通常希望在比较后立即修复数据;相比于数据比较,有以下差异:
| 配置路径                              | 说明                                                                                                              |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| /tasks/{task-name}/action_size        | 该参数的单位是 M;比较后一次批量更新的数据量。                                                                     |
| /tasks/{task-name}/action             | 设置为 sync_diff,表示将执行数据比较并修复差异。                                                                   |

值得注意的是,比较和修复功能会删除目标 ES 中存在但源 ES 中不存在的数据。

总结

使用 ELA 的工具时,最重要的是确保不影响现有业务;在测试时,应该先设置一个相对较小的值以确保其可以工作;然后根据 ES 的服务运行情况继续调整参数,以达到理想的数据比较速度。

分享 :