开发者社区> 问答> 正文

分库分表的数据同步到es应该怎么配置使用

用了阿里云的drds分库分表,数据同步到es应该怎么使用canal db$0-23 24个库分布在3个实例上,每个8个 tab$0-191 192张表分布在24个db上

难道需要配置192个yml任务同步吗?

原提问者GitHub用户jianyun

展开
收起
古拉古拉 2023-05-08 13:59:08 182 0
2 条回答
写回答
取消 提交回答
  • 后续的迭代会提供相应支持

    原回答者GitHub用户rewerma

    2023-05-09 17:55:30
    赞同 展开评论 打赏
  • 随心分享,欢迎友善交流讨论:)

    根据您的描述,您使用了阿里云的 DRDS 分库分表,现在需要将数据同步到 Elasticsearch 中。由于 DRDS 有 24 个数据库和 192 张表,每个数据库上有 8 张表,因此需要同步的任务较多,不可能为每个表都单独配置一个任务。为了简化配置,您可以考虑使用 Canal + Logstash 的方案来实现数据同步。

    Canal 是一个用于 MySQL 数据库的数据同步工具,它可以将 MySQL 中的 binlog 解析成数据变更事件,并将这些事件发送给下游应用程序。Logstash 是一个开源的数据处理工具,它可以将各种数据源的数据转换成 Elasticsearch 的数据格式,并将数据写入 Elasticsearch 中。

    在使用 Canal + Logstash 实现数据同步时,您需要按照以下步骤操作:

    配置 Canal。您需要在 Canal 中配置正确的数据源,并设置需要同步的表。在配置 Canal 时,您可以使用正则表达式指定需要同步的表。例如,如果您想同步所有以 tb_ 开头的表,可以使用以下正则表达式: canal.instance.filter.regex=...tb_. 配置 Logstash。使用 Logstash 来将 Canal 发送的数据转换成 Elasticsearch 的数据格式,并将数据写入 Elasticsearch 中。在配置 Logstash 时,您需要使用 Canal 的 Logstash 插件来接收 Canal 发送的数据,并使用 Elasticsearch 插件将数据写入 Elasticsearch 中。以下是一个简单的 Logstash 配置文件示例: input { canal { canal_zookeeper_address => "localhost:2181" canal_zookeeper_path => "/otter/canal" canal_destination => "example" } } output { elasticsearch { hosts => "localhost:9200" index => "%{[@metadata][database]}-%{[@metadata][table]}" } } 在上述配置中,input 使用 Canal 插件来接收 Canal 发送的数据,output 使用 Elasticsearch 插件将数据写入 Elasticsearch 中。您可以根据需要调整 Canal 和 Elasticsearch 插件的配置参数。

    启动 Logstash。在配置完 Logstash 后,您需要启动 Logstash,让它开始接收 Canal 发送的数据并将数据写入 Elasticsearch 中。您可以使用以下命令启动 Logstash: bin/logstash -f config/canal-elasticsearch.conf 启动 Logstash 后,它会自动从 Canal 中接收数据,并将数据写入 Elasticsearch 中。

    总之,使用 Canal + Logstash 的方案可以简化数据同步的配置,并提高数据同步的性能和稳定性。如果您有任何问题或疑问,请告诉我。

    2023-05-08 14:08:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载