logstash数据同步

本文展示了如何使用Logstash的pipeline配置文件(abc.conf)从MySQL数据库进行增量同步数据,通过jdbc输入插件连接数据库,基于特定字段(id和last_update_time)进行追踪,然后将数据输出到stdout和Elasticsearch索引dish中。配置中包含了时间区设置、分页查询和定时任务调度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)编写logstash的pipeline文件 abc.conf。

input {
 stdin { }
    jdbc {
        jdbc_connection_string => "jdbc:mysql://ip:3306/db?serverTimezone=Asia/Shanghai"
  		#mysql账号
        jdbc_user => "root"
 		#mysql密码
        jdbc_password => "root"
 
        jdbc_driver_library => "/resource/mysql-connector-java-8.0.18.jar"
 
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"

		#设置jdbc时区
        jdbc_default_timezone =>"Asia/Shanghai"

        #使用其他字段追踪而不是时间
        use_column_value => true
        #追踪的字段
        tracking_column => "id"
        

        #开启分页查询
        jdbc_paging_enabled => true

        #分页大小
        jdbc_page_size => "100"
       #检索表的sql语句(根据last_update_time进行增量检索同步)
        statement => "SELECT dish_id as id,dish_name as name,code,price,shop_id ,store_id ,1 as type,last_update_time FROM t_dish where last_update_time > :sql_last_value order by last_update_time desc"
        #执行周期
        schedule => "0/5 * * * * *"
    }
 }
 
input {
 stdin { }
    jdbc {
        jdbc_connection_string => "jdbc:mysql://ip:3306/db?serverTimezone=Asia/Shanghai"
  
        jdbc_user => "root"
 
        jdbc_password => "root"
 
        jdbc_driver_library => "/resource/mysql-connector-java-8.0.18.jar"
 
        jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
        #设置jdbc时区
        jdbc_default_timezone => "Asia/Shanghai"

        #使用其他字段追总而不是时间
        use_column_value => true
        #追踪的字段
        tracking_column => "last_update_time"
        #追踪列的类型
        tracking_column_type => "timestamp"
       
         
        jdbc_paging_enabled => "true"
         
        jdbc_page_size => "50000"
        #根据最后更新时间增量同步数据
        statement => "SELECT setmeal_id as id,setmeal_name as name,code,shop_id,store_id,2 as type,last_update_time FROM t_setmeal where last_update_time > :sql_last_value"
        schedule => "0/5 * * * * *"
    }
 }
  
 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
        hosts => "ip:9200"
        index => "dish"
        document_id => "%{id}"
    }
}

filter {
  ruby {
    code => "event.timestamp.time.localtime"
  }
}

(2)将abc.conf放入/root/soft/base/data/logstash/pipeline/目录。

(3)重新启动logstash,观察索引库中是否同步了数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值