elk是最佳组合,通过测试logstash同步数据的性能还是很靠谱的
以下是部署步骤记录,可实现增量或者全量,只需要改一下lastValue的值即可
目录
1.拉取loastash镜像
2、创建logstash目录,并创建一下目录及文件,如下
3、创建Dockerfile,内容如下:
4、jar下方的是mysql 驱动jar
5、创建lastValue目录来存放上次执行的记录值,并创建本次任务记录文件如下:(可以不创建,每个批次后会自动写入)
6、创建pipeline目录并创建,本次任务的配置文件,logstash.conf
7、打包镜像
8、启动服务
后续相关命令:
1.拉取loastash镜像
docker pull logstash
当前版本应该是7.10.1
2、创建logstash目录,并创建一下目录及文件,如下
[root@test-zjzb-1: /opt/logstash]# lltotal 16-rw-r--r-- 1 root root 267 Dec 30 16:08 Dockerfiledrwxr-xr-x 2 root root 4096 Dec 30 16:08 jardrwxr-xr-x 2 root root 4096 Dec 30 16:33 lastValuedrwxr-xr-x 2 root root 4096 Dec 30 16:34 pipeline
3、创建Dockerfile,内容如下:
[root@test-zjzb-1: /opt/logstash]# lltotal 16-rw-r--r-- 1 root root 267 Dec 30 16:08 Dockerfiledrwxr-xr-x 2 root root 4096 Dec 30 16:08 jardrwxr-xr-x 2 root root 4096 Dec 30 16:33 lastValuedrwxr-xr-x 2 root root 4096 Dec 30 16:34 pipeline
4、jar下方的是mysql 驱动jar
[root@test-zjzb-1: /opt/logstash]# cd jar[root@test-zjzb-1: /opt/logstash/jar]# lsmysql-connector-java-8.0.21.jar[root@test-zjzb-1: /opt/logstash/jar]#
5、创建lastValue目录来存放上次执行的记录值,并创建本次任务记录文件如下:(可以不创建,每个批次后会自动写入)
[root@test-zjzb-1: /opt/logstash/lastValue]# lslastId-es[root@test-zjzb-1: /opt/logstash/lastValue]#内容如下:[root@test-zjzb-1: /opt/logstash/lastValue]# cat lastId-es--- 20762979
注:--- 20762979
是固定格式,---空格加上次的值
6、创建pipeline目录并创建,本次任务的配置文件,logstash.conf
内容如下:
[root@test-zjzb-1: /opt/logstash/lastValue]# cd ../pipeline/[root@test-zjzb-1: /opt/logstash/pipeline]# lslogstash.conf[root@test-zjzb-1: /opt/logstash/pipeline]# cat logstash.confinput {stdin {}jdbc {jdbc_connection_string => "jdbc:mysql://10.**.**.**:3306/bigdatatest"jdbc_user => "root"jdbc_password => "123****1q"jdbc_driver_library => "/app/mysql-connector-java-8.0.21.jar"jdbc_driver_class => "com.mysql.jdbc.Driver"jdbc_paging_enabled => "true"jdbc_page_size => "30000"use_column_value => "true"tracking_column => "id"statement => "select * from dt_tt_haier_total_order where id > :sql_last_value"schedule => "* * * * *"last_run_metadata_path => "/usr/share/logstash/pipeline/lastVule/lastId-es"}}filter {json {source => "message"remove_field => ["message"]}}output {elasticsearch {hosts => ["10.***.***.***:9200"]index => "test-logstash-index-tank"document_id => "%{id}"}stdout {codec => json_lines}}
注释:
jdbc_page_size 每批次分页,默认30万,这里增量改成了3万
tracking_column指定增量试用的标志字段
statement 执行语句
schedule 周期,以上配置默认一分钟一批次
last_run_metadata_path 增量时上次值储存位置
output 配置输出信息,此处为es配置
input 配置输入信息,此处为mysql
jdbc_driver_library 是mysql需要的驱动jar,此处咱们下载后挂在上
7、打包镜像
docker build -t uo-bd-logstash .
8、启动服务
docker run -it --name uo-bd-logstash \-v /opt/logstash/lastValue:/usr/share/logstash/pipeline/lastVule/ \-p 20726:5044 -p 20725:9600 \-d uo-bd-logstash
后续相关命令:
查看日志 docker logs -f uo-bd-logstash
停止服务 docker stop uo-bd-logstash
删除容器docker rm uo-bd-logstash
删除镜像docker rmi uo-bd-logstash