数据比较
目录
快速开始
- 创建新配置
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"
详细功能说明
配置
- 配置数据比较任务。
配置路径 | 说明 |
---|---|
/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,表示将执行增量数据同步。 |
- 配置数据比较和修复 通常希望在比较后立即修复数据;相比于数据比较,有以下差异:
| 配置路径 | 说明 |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| /tasks/{task-name}/action_size | 该参数的单位是 M;比较后一次批量更新的数据量。 |
| /tasks/{task-name}/action | 设置为 sync_diff,表示将执行数据比较并修复差异。 |
值得注意的是,比较和修复功能会删除目标 ES 中存在但源 ES 中不存在的数据。
总结
使用 ELA 的工具时,最重要的是确保不影响现有业务;在测试时,应该先设置一个相对较小的值以确保其可以工作;然后根据 ES 的服务运行情况继续调整参数,以达到理想的数据比较速度。