gpt4 book ai didi

mysql - 如何将mysql数据库同步到外部数据源

转载 作者:行者123 更新时间:2023-11-29 21:54:32 25 4
gpt4 key购买 nike

我有一个名为 search 的 mysql 数据库表,我需要使用 ElasticSearch 索引来更新数据。我已经将表从表导出到 es 索引,但现在我需要保持数据同步,否则搜索很快就会过时。

我能想到的唯一方法是每 x 分钟导出一次表,然后将其与上次导入的表进行比较。这是不可行的,因为该表大约有 10M 行,而且我不想全天每五分钟进行一次表导出。对此有什么好的解决方案吗?请注意,我只有数据库的读取访问权限。

最佳答案

我会利用 Logstash jdbc input插件和 elasticsearch output插入。有一个blog article显示此解决方案的完整示例。

installing Logstash之后,您可以使用我上面提到的插件创建一个配置文件,如下所示:

input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/mydb"
jdbc_user => "user"
jdbc_password => "1234"
jdbc_validate_connection => true
jdbc_driver_library => "mysql-connector-java-5.1.36-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
schedule => "5m"
statement => "SELECT * FROM search WHERE timestamp > :sql_last_value"
}
}
output {
elasticsearch {
protocol => http
index => "searches"
document_type => "search"
document_id => "%{uid}"
host => "ES_NODE_HOST"
}
}

您需要确保更改一些值以匹配您的环境,但这对于您需要执行的操作应该没有问题。

每隔 5 分钟,查询就会运行一次,并获取其时间戳(更改该名称以匹配您的数据)比上次查询更新的所有搜索记录跑了。所选记录将被接收到位于 ES_NODE_HOST 上的 Elasticsearch 服务器中的 searches 索引中。确保相应地更改索引和类型名称以及主键字段的名称(即 uid)以匹配您的数据。

关于mysql - 如何将mysql数据库同步到外部数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33293965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com