使用 Logstash-input-jdbc 同步 MySQL 数据至 ElasticSearch7

  • 安装
cd /usr/local/logstash

# 安装 gem
yum -y install gem

# 安装 logstash-input-jdbc
bin/logstash-plugin install logstash-input-jdbc
  • 同步 Mysql 数据到 Elasticsearch
# 下载 java 的 mysql 驱动包
# 参考:https://www.runoob.com/java/java-mysql-connect.html
# 下载地址:http://central.maven.org/maven2/mysql/mysql-connector-java/
wget http://central.maven.org/maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar

# (重要)移动驱动包至 /usr/local/logstash/logstash-core/lib/jars/
mv mysql-connector-java-8.0.18.jar logstash/logstash-core/lib/jars/

# 在 /usr/local/logstash 目录下配置文件
vim mysql-jdbc.conf
# 写入如下内容
# 注: 使用时去掉注释,否则会报错
input {
    stdin {
    }
    jdbc {
      # mysql jdbc connection string to our backup databse
      jdbc_connection_string => "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"
      jdbc_user => "root"
      jdbc_password => "asdf"
      # 驱动
      jdbc_driver_library => "mysql-connector-java-8.0.18.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "3000"
      # 执行的 sql 文件路径
      statement_filepath => "/usr/local/logstash/mysql-jdbc.sql"
      # statement => "SELECT * FROM test"
      # 设置监听间隔,各字段含义从左至右为:分、时、天、月、年,全部为 * 默认含义为每分钟都更新
      schedule => "* * * * *"
      type => "test"
    }
}

filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}

output {
    elasticsearch {
    	# Elasticsearch 的 IP 地址及端口
        hosts => ["localhost:9200"]
        # 索引名称
        index => "mysql-test"
        # 需要关联的数据库中有有一个 id 字段,对应类型中的 id
        document_id => "%{id}"
        # 索引名称
        document_type => "_doc"
    }
    stdout {
    	# json 格式输出 
        codec => json_lines
    }
}
# 保存退出

# 待执行的 sql 文件
vim mysql-jdbc.sql
# 写入
SELECT * FROM test
# 保存退出

# 启动
bin/logstash -f mysql-jdbc.conf

# Tips:
# 一个 Logstash 实例可以借助 pipelines 机制同步多个表,只需要写多个配置文件就可以
# 添加表配置文件
vim mysql-jdbc2.conf
vim mysql-jdbc3.conf
# 修改 pipelines 配置
vim config/pipelines.yml
# 添加
- pipeline.id: mysql-jdbc2
  path.config: "/usr/local/logstash/mysql-jdbc2.conf"
- pipeline.id: mysql-jdbc3
  path.config: "/usr/local/logstash/mysql-jdbc3.conf"
# 重启 logstash(-r 表示配置文件有改动时自动重新加载)
bin/logstash -r

# 相关资料:https://elasticsearch.cn/article/6176
发布了119 篇原创文章 · 获赞 12 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/hualaoshuan/article/details/103700800
今日推荐