Rootop 服务器运维与web架构

mysql数据同步到elasticsearch,用于实现产品搜索功能。

logstash、elasticsearch、kibana安装略,这里用的版本为6.5.1

# 安装jdbc插件 logstash5.X已经集成此插件

[root@localhost ~]# cd /usr/share/logstash/bin

# 查看是否安装jdbc插件

[root@localhost bin]# ./logstash-plugin list | grep jdbc

# 安装jdbc插件

[root@localhost bin]# ./logstash-plugin install logstash-input-jdbc

# 配置logstash,mysql数据同步到elasticsearch

1、创建logstash配置文件 mysql-sync-es.conf :

input {
  stdin {
  }
  
  jdbc {
      jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/test"
      jdbc_user => "root"
      jdbc_password => "root"
      # 这里需要设置正确的mysql-connector-java jar包路径,从 https://search.maven.org/search?q=mysql-connector 可以下载
      jdbc_driver_library => "/etc/logstash/mysql-connector-java-8.0.13.jar"
      jdbc_default_timezone =>"Asia/Shanghai"
      # the name of the driver class for mysql
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      # 最多取50000条更新的数据
      jdbc_page_size => "50000"
      # 以下对应着要执行的sql的绝对路径
      statement_filepath => "/etc/logstash/sql.sql"
      # 记录上一次运行的时间,用于sql中where条件过滤出新数据。
      last_run_metadata_path => "/root/dockermount/last_value"
      # 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 设定ES索引类型
      type => "doc"
  }
}

output {
  elasticsearch {
      # ES IP地址与端口
      hosts => "192.168.10.17:9200"
      # ES索引名称(自己定义的)
      index => "user"
      # 唯一列名,保证更新后的mysql数据同步到es时,es中不会出现重复数据,类似mysql中更新数据的where条件。
      document_id => "%{id}"
  }
  stdout {
      # 以JSON格式输出到控制台
      codec => json_lines
  }
}

2、sql脚本,注意sql不能以分号结束:

SELECT * FROM `user` where `time` >= :sql_last_value

其中:sql_last_value的值就对应last_run_metadata_path => “/root/dockermount/last_value”这个参数的值。

3、最后启动logstash测试:

/usr/share/logstash/bin/logstash -f mysql-sync-es.conf

去kibana中添加user索引就可以查看同步过来的数据了。
测试结果:
logstash每分钟会执行一次sql脚本中的语句,其次logstash会计算下更新的数据条数是否超过配置文件中定义的值。
数据同步及数据更新功能测试通过。

参考过的资料:
http://hi.ktsee.com/697.html
https://blog.csdn.net/laoyang360/article/details/51747266
https://blog.csdn.net/laoyang360/article/details/51793301
https://blog.csdn.net/opera95/article/details/78553743
https://wenchao.ren/archives/393 # 数据重复问题 主键解决

原创文章,转载请注明。本文链接地址: http://www.rootop.org/pages/4232.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。