存量数据同步

  • 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: 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 的服务运行情况继续调整参数,以达到理想的数据迁移速度。

分享 :