ES Logstash 8.x 同步 mysql

Elasticsearch专栏入口

EKL部署:Elasticsearch + Kibana+Logstash 8.x版本部署(linux)

一、Logstash环境准备

1.1 logstash下载

# 确认位置

cd /usr/local

# 下载

wget https://artifacts.elastic.co/downloads/logstash/logstash-8.1.2-linux-x86_64.tar.gz

# 解压
tar -zxvf logstash-8.1.2-linux-x86_64.tar.gz

# 删除安装包
rm -rf logstash-8.1.2-linux-x86_64.tar.gz

# 改名
mv logstash-8.1.2/ logstash

1.2 基础配置

# 确定位置
cd /usr/local/logstash

# 进入配置文件
vim config/logstash.yml

# 末尾直接添加
http.host: "0.0.0.0"
node.name: logstash

# 添加mysql目录
mkdir mysql

# 移动至目录
cd mysql

# 下载 驱动 mysql-connector
wget https://cdn.mysql.com//archives/mysql-connector-java-8.0/mysql-connector-java-8.0.15-1.el7.noarch.rpm

# 下载下来时rpm格式 解压
rpm2cpio mysql-connector-java-8.0.15-1.el7.noarch.rpm | cpio -div

# 把jar包移出
mv usr/share/java/mysql-connector-java-8.0.15.jar ./

# 删除多余的文件
rm -rf mysql-connector-java-8.0.15-1.el7.noarch.rpm
rm -rf usr/

# 退出mysql目录
cd ..

# 进入最终同步配置
vim config/mysql.conf 

二、Logstash同步mysql配置

2.1 配置

input {
  jdbc {
# mysql 数据库链接,shop为数据库名
      jdbc_connection_string => "jdbc:mysql://ip/tiantiantsouti?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC"
      # 用户名和密码
      jdbc_user => ""
      jdbc_password => ""

      # 驱动
      jdbc_driver_library => "/usr/local/logstash/mysql/mysql-connector-java-8.0.15.jar"

      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"

      #是否分页
      jdbc_paging_enabled => "true"
      jdbc_page_size => "5000"

      #直接执行sql语句 增量同步
      statement => "select * from questions WHERE id >= :sql_last_value"

      # 执行的sql 文件路径+名称
      # statement_filepath => "/usr/local/logstash/mysql/question.sql"

      # 是否记录某个字段值,true为我们自定义一个字段值,flase为默认的时间戳.
      use_column_value => true

      # 记录字段的类型默认时numeric数字还可以是timestamp
      tracking_column_type => "numeric"

      # 设置新的记录字段
      tracking_column => "id"

      # 如果是true,每次将新的id更新到指定文件中
      record_last_run => true

      # 关闭时是否清除记录文件,false为不清除
      clean_run => false

      # 保存位置
      last_run_metadata_path => "/usr/local/logstash/last_time_000"
      
      # 更新时间间隔 现在5个*这个为默认 1分钟1更新
      schedule => " * * * * * "
    }
}


output {
  elasticsearch {
        #es的ip和端口
        hosts => ["http://ip:9200"]
        #ES索引名称(自己定义的)
        index => "index"
        #设置数据的id为数据库中的字段 id需要换成mysql中的id 名必须为小写不然无法带入
        document_id => "%{id}"
    }
    stdout {
        codec => json_lines
    }
}

2.2 测试

# 目录后退
cd ..
#  测试
bin/logstash -f config/mysql.conf -t
# 返回信息最后应该时这样的
Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

2.3启动

# 成功后启动 
bin/logstash -f config/mysql.conf

# nohup 后台启动 两种都可
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/mysql.conf > nohup.out 2>&1 &

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要实现LogstashMySQL的实时同步,您可以按照以下步骤进行操作: 1. 首先,确保您已经安装了LogstashMySQL,并配置好相应的连接信息。 2. 在Logstash中使用jdbc输入插件,该插件可以从MySQL数据库读取数据。您可以在Logstash配置文件中添加以下内容: ```bash input { jdbc { jdbc_connection_string => "jdbc:mysql://localhost:3306/your_database" jdbc_user => "your_username" jdbc_password => "your_password" jdbc_driver_library => "/path/to/mysql-connector-java.jar" jdbc_driver_class => "com.mysql.jdbc.Driver" statement => "SELECT * FROM your_table WHERE updated_at > :sql_last_value" use_column_value => true tracking_column => "updated_at" tracking_column_type => "timestamp" } } ``` 确保将上述配置中的数据库连接信息、表名和更新时间字段替换为您自己的信息。 3. 配置Logstash的输出插件,将数据发送到您希望同步的目的地。例如,您可以使用elasticsearch插件将数据发送到Elasticsearch: ```bash output { elasticsearch { hosts => ["localhost:9200"] index => "your_index" document_id => "%{id}" } } ``` 将上述配置中的Elasticsearch主机和索引名称替换为您自己的信息。 4. 启动Logstash,并它将会开始监视MySQL数据库,并将更改的数据实时同步Elasticsearch(或其他目的地)中。 请注意,这只是一个简单的示例配置,并且您可能需要根据自己的需求进行修改。同时,确保您已经安装了适当版本的MySQL JDBC驱动程序,并将`jdbc_driver_library`配置为正确的路径。 希望这些信息能对您有所帮助!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值