在做 Elasticsearch 之间的数据同步时很多团队第一反应是使用Logstash。作为 Elastic 官方生态的一部分它配置简单能解决基本的数据搬运需求。但由于缺乏直观的监控、告警以及精细的任务管理在跨集群或大规模同步场景中Logstash 常常不是最佳方案。针对这些问题CloudCanal 提供了基于增量扫描的企业级数据同步解决方案本文将介绍这种方案的实现机制和特性并带你从零开始构建数据链路帮你快速上手。Logstash 的现实挑战Logstash 是 Elastic 官方推出的开源数据处理管道工具提供了丰富的 input / filter / output 插件可以将数据从一个集群读取并写入另一个集群因此在 Elasticsearch 数据同步场景中被广泛使用。但在实际生产环境中Logstash 也存在一些问题。例如Logstash 没有内置的任务管理和监控断点续传需要自己处理配置文件一旦复杂起来维护成本也不低。更关键的是它本质上是一个数据管道工具难以直观地监测同步状态、延迟、异常出了问题往往很难快速定位。这种“盲盒式”的运维体验在大规模的数据迁移同步中往往会放大风险给业务稳定性带来极大挑战。CloudCanal 解决方案增量扫描最近CloudCanal 提供了一种轻量、直观的 Elasticsearch 数据同步方式增量扫描同步。相比于 CDC 方式需安装插件对版本要求极严仅推荐给对秒级实时性有极致要求的场景增量扫描是目前更普适、更稳定的选择。实现机制增量扫描的核心思路很直接既然无法获取变更日志那就定时扫描每次只拉取最近一段时间内有变化的数据。具体来说CloudCanal 会创建一个定时扫描任务按设定的周期拉取数据结合用户指定的增量字段时间类型字段每次扫描只会拉取时间在“上次扫描之后”的新增或更新数据从而实现增量同步效果。整个过程不需要对源端做任何改造也不需要安装插件无需侵入 Elasticsearch 集群。不过这种方式的同步并非实时完成通常会有一定延迟具体取决于定时扫描的周期同时也无法直接感知和捕获 DELETE 操作。链路管理和监控相比 LogstashCloudCanal 支持可视化创建任务并内置了完整的任务管理和监控能力原本不可见的链路状态都转化为直观的指标便于使用和运维。同步任务运行期间你可以在控制台实时查看延迟、吞吐量、同步行数等核心指标随时掌握链路的状态。一旦任务出现异常可以在控制台及时发现也可以进一步查看详细日志定位问题。在告警方面CloudCanal 支持通过 IM、电话、邮件等多种方式发送通知可以根据团队的使用习惯灵活配置。出了问题不用盯着控制台第一时间就能收到提醒。此外CloudCanal 具备断点续传能力。若任务意外中断重启后会自动从上次记录的增量位点继续执行。这些企业级同步能力让 Elasticsearch 之间的增量同步变得更可控、更稳健。操作演示下面将演示如何使用增量扫描方式从零开始搭建 Elasticsearch 到 Elasticsearch 同步链路。步骤 1安装 CloudCanal进入 CloudCanal 官网点击免费社区版。参考 全新安装Docker安装 CloudCanal 私有部署版本。安装完成后用默认账号testclougence.com/clougence2021登录控制台。步骤 2添加数据源点击数据源管理新增数据源分别添加源端和目标端的 Elasticsearch并确保测试连接正常。步骤 3选择数据源点击同步任务创建任务进入任务创建流程。选择源端和目标端数据源点击测试连接。选择需要同步的 schema 信息。步骤 4配置任务在功能配置页面任务类型选择增量同步。同步模式选择定时扫描并设置参数。执行周期即每次扫描的间隔单位秒 (默认 300 秒)。建议先调大稳定后再调小。执行前动作即开始扫描之前可以执行的动作。这里选择无以实现增量同步效果。步骤 5选择数据表在表 action 过滤页面选择要迁移的表。步骤 6处理数据在数据处理页面的左侧选择表并勾选要迁移的列。按需设置增量字段不设置则每次进行全量扫描优先选可排序、稳定递增或可比较的时间字段单独设置在左侧点击操作 增量字段为这张表设置增量字段。批量操作在右上角点击批量操作 增量字段为多张表统一设置增量字段。步骤 7创建确认在创建确认页面确认任务信息。确认无误后点击创建任务。任务将自动开始运行。总结相比 Logstash增量扫描这种方式更方便、稳定并且内置监控和管理能力更适合生产环境。如果你正在寻找 Elasticsearch 到 Elasticsearch 数据迁移同步的解决方案不妨试一下 CloudCanal 免费社区版几分钟内即可完成一条同步链路的搭建让数据更高效地流动起来。