返回
简易方案,轻松同步 MySQL 数据到 Elasticsearch
开发工具
2024-01-13 11:36:36
众所周知,同步 MySQL 数据到 Elasticsearch 是一种常见需求。为了处理数据,可以使用自定义同步程序,但如果业务需求并不特殊,官方提供的 Logstash 就能发挥很大作用。
Logstash 的优势
- 易于使用:Logstash 提供了一个用户友好的界面,简化了同步过程,即使是新手也能轻松上手。
- 功能强大:Logstash 具有强大的数据处理功能,能够满足各种同步需求,例如过滤、转换和聚合数据。
- 可扩展性强:Logstash 可以轻松扩展,以满足不断增长的数据同步需求,确保系统能够随着业务的发展而平稳运行。
Logstash 的局限性
- 不支持被物理删除的数据同步:如果数据在 MySQL 中被物理删除,Logstash 将无法将其同步到 Elasticsearch 中。
- 不支持物理删除 ES 中的数据:如果数据在 Elasticsearch 中被物理删除,Logstash 也无法将其同步回 MySQL 中。
同步步骤
-
安装 Logstash
在所有需要同步数据的服务器上安装 Logstash。
-
配置 Logstash
编辑 Logstash 的配置文件 logstash.conf,添加以下内容:
input { jdbc { jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb" jdbc_user => "root" jdbc_password => "password" statement => "SELECT * FROM mytable" } } output { elasticsearch { hosts => ["localhost:9200"] index => "myindex" document_type => "mytype" } }
-
启动 Logstash
运行以下命令启动 Logstash:
bin/logstash -f logstash.conf
-
验证数据同步
使用以下命令检查 Elasticsearch 中的数据是否已同步:
curl -XGET 'localhost:9200/myindex/mytype/_search?pretty'
注意事项
- 在表设计中添加逻辑删除字段 IsDelete 以标识数据删除。
- Logstash 无法同步被物理删除的数据,因此需要在应用程序中处理数据删除逻辑。
- 如果需要更高级的同步功能,可以考虑使用其他工具,例如 Debezium 或 Kafka Connect。
Logstash 资源