企业中项目日志数较多 储存处理方式elk和mysql哪种方式更合适?

博主工作的一个项目里用了elk来存储用户操作日志,日志量大概是每天一千万左右的数据,最近服务器的磁盘被塞满了   本想将时间较长的数据删除掉   但当时删除总是出现版本冲突的错误

企业中项目日志数较多 储存处理方式elk和mysql哪种方式更合适?_第1张图片

并且es在单个索引数据达到 亿级以上的时候查询时间也是不乐观的

于是乎博主花了点时间将es的日志数据全部查询出来    准备将这些数据包括以后的日志数据都存储到mysql中      博主的日志都是先全部存入kafka然后再通过logstash消费到es中,现改成用java程序消费日志数据存储mysql中

企业中项目日志数较多 储存处理方式elk和mysql哪种方式更合适?_第2张图片

 由于mysql单表的数据查询极限在一千万左右,所以博主做的分表方式如下:

第一.每个月用三十张表存储数据  三十张表的数据存储位置规划是根据用户帐号的信息的hash得来,并且根据用户帐号和查询条件字段做了索引  这样的话 查询时可以大大提高效率  并且查询一个用户的操作记录也只需要查询一张表即可,不过由于是根据年月分表,那么如果跨月查询的话还是需要结合多张表查询    不过根据业务情况  大多出查询情况都是查询月份数据   所以这样做问题不大

企业中项目日志数较多 储存处理方式elk和mysql哪种方式更合适?_第3张图片

当然有些朋友会说 为什么不用hive和hadoop呢?

由于业务上的需求   不适合用非实时性的存储方式  并且查询效率方面并不是很出色

总结来说  es和mysql 存储日志各有各的好处   es的缺点就是比较吃系统配置  语法相对sql而言较复杂(7.x以后或可以用sql插件使用sql查询)   分页查询相对而言比较麻烦, 优点就是查询速度较快,支持分词,性能较好 有比较多的周边组件

mysql的优缺点也很明显:免费  轻巧   当然啦  性能方面肯定不如大型数据库 

 

 所以呢    解决问题的办法很多  根据不同的情况去选择合适的,如果公司不缺钱 服务器有的是,可以考虑用elk弄一套日志收集系统  如果怕坑 怕麻烦  还是选择mysql分表 分库存储比较好 ,毕竟博主是掉了elk的坑里  

 

都看到这了  喜欢的话麻烦看官点个赞或者关注一下吧

你可能感兴趣的:(ELK,数据库)