docker搭建Elasticsearch、Kibana、Logstash 同步mysql数据到ES
Tags: ElasticSearchESKibanaLogstashMySQL数据同步
一、前言
在数据量大的企业级实践中,Elasticsearch
显得非常常见,特别是数据表超过千万级后,无论怎么优化,还是有点力不从心!使用中,最首先的问题就是怎么把千万级数据同步到Elasticsearch
中,在一些开源框架中知道了,有专门进行同步的!那就是Logstash
。在思考,同步完怎么查看呢,这时Kibana
映入眼帘,可视化的界面,让使用更加的得心应手哈!!这就是三剑客ELK
。不过大多时候都是进行日志采集的,小编没有用,只是用来解决一个表的数据量大,查询慢的!后面小编在专门搭建日志采集的ELK
。
二、三者介绍
1. Elasticsearch
Elasticsearch 是一个分布式
、RESTful
风格的搜索
和数据分析引擎
,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。
2. Kibana
Kibana 是一个免费且开放的用户界面
,能够让您对 Elasticsearch 数据进行可视化
,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。
3. Logstash
Logstash 是免费且开放的服务器端数据处理管道
,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
三、版本选择
现在最新版就是8.5
,最新的教程少和问题未知,小编选择7版本的,求一手稳定哈!
于是去hub.docker
查看了一下,经常用的版本,最终确定为:7.17.7
dockerHub官网地址:https://hub.docker.com/_/elasticsearch
官方规定:
安装 Elastic Stack 时,您必须在整个堆栈中使用相同的版本。例如,如果您使用的是 Elasticsearch 7.17.7,则安装 Beats 7.17.7、APM Server 7.17.7、Elasticsearch Hadoop 7.17.7、Kibana 7.17.7 和 Logstash 7.17.7
四、搭建mysql
1. 拉去MySQL镜像
1 | sudo docker pull mysql:5.7 |

2. Docker启动MySQL
1 2 3 4 5 6 7 8 9 10 11 12 | sudo docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7 ####这里往下是解释,不需要粘贴到linux上############# --name 指定容器名字 -v 将对应文件挂载到linux主机上 -e 初始化密码 -p 容器端口映射到主机的端口(把容器的3306映射到linux中3306,这样windows上就可以访问这个数据库) -d 后台运行 |
3. Docker配置MySQL
1 2 3 4 5 6 7 8 9 10 11 12 | vim /mydata/mysql/conf/my.cnf # 创建并进入编辑 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake skip-name-resolve |
4. Docker重启MySQL使配置生效
1 | docker restart mysql |
5. 新增数据库
在这里插入图片描述
6. 新建测试表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | DROP TABLE IF EXISTS `sys_log`; CREATE TABLE `sys_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志主键', `title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '模块标题', `business_type` int(2) NULL DEFAULT 0 COMMENT '业务类型(0其它 1新增 2修改 3删除)', `method` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '方法名称', `request_method` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求方式', `oper_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '操作人员', `oper_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '请求URL', `oper_ip` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '主机地址', `oper_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1585197503834284034 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作日志记录' ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1; |
五、ELK搭建准备
1. 创建挂载的文件
es挂载: