存量数据同步
目录
快速开始
- 创建新配置
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: stock-sync-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
query: '{"terms": {"_id": ["1", "2", "3"]}}\'
action: sync
- 执行命令进行数据同步
./ela --config ./config.yaml --task "stock-sync-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}/force | 是否在全量数据同步前强制删除目标 ES 中的索引并从源 ES 复制索引配置到目标 ES。如果设置为 False,则会更新目标 ES 中相同 ID 的索引,覆盖目标 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 工具的本地内存消耗。 |
/tasks/{task-name}/action_parallelism | 遍历的数据会批量写入目标 ES;该参数用于决定写入的并发度。 |
/tasks/{task-name}/action_size | 该参数的单位是 M;当批量写入接口的 body 大小达到该值时,会执行一次批量写入操作。 |
/tasks/{task-name}/parallelism | 数据同步会有很多索引对;该参数用于设置同一任务中有多少个索引对并发同步。 |
/tasks/{task-name}/ids | 该参数不是必须的,主要用于同步索引中指定文档的数据;应该设置为文档 _id 字段的列表,用空格分隔,例如 “abc def cdf”。 |
/tasks/{task-name}/action | 设置为 sync,表示将执行全量数据同步。 |
/tasks/{task-name}/query | 使用查询条件同步部分数据,用于查询部分数据。 |
总结
使用 ELA 的工具时,最重要的是确保不影响现有业务;在测试时,应该先设置一个相对较小的值以确保其可以工作;然后根据 ES 的服务运行情况继续调整参数,以达到理想的数据迁移速度。