MySQL关于日志配置安全整改及处理方法
【环境介绍】
系统环境:Linux + mysql 5.7.18 + 主从复制架构
【背景描述】
需求:MySQL数据库都有每年的集团安全整改,常常要求弱口令扫描,基线扫描,漏洞扫描等等。对于MySQL的基线配置检查中的日志方面也是有好几个要求,建议开启MySQL的各种日志配置,记录数据库的各种类型活动,便于处理数据库故障和性能优化都有很大的帮助。开启这配置提供了帮助的同时也同时产生一定的性能消耗和存储方面的消耗。
【MySQL日志配置大致介绍】
|
类型 |
介绍 |
作用 |
参数 |
|
错误日志 |
记录对数据库的启动、运行、关闭过程进行记录信息 |
记录告警或正确信息 |
log_error |
|
二进制日志 |
记录对数据库执行更改的所有操作,不包含select和show类型操作信息 |
用于恢复,复制,审计 |
log_bin |
|
慢查询日志 |
记录对数据库执行长的SQL操作信息 |
定位存在问题的SQL,从SQL语句层面上进行优化 |
slow_query_log |
|
通用查询日志 |
记录对数据库请求的所有操作信息 |
用于恢复,审计 |
general_log |
|
更新日志 |
记录从主服务器接收的从服务器的更新是否应该记录到从设备自己的二进制日志 |
用于复制 |
log_slave_updates |
【MySQL日志配置配置】
错误日志:默认开启,初始化时指定错误日志路径。/etc/my.cnf 参数文件设置:log_error = /home/mysql/logs/mysql.err
二进制日志:可关闭,可开启,全局静态参数。log_bin = /home/mysql/logs/binlog
慢查询日志:可开启可关闭,全局动态参数。
set GLOBAL slow_query_log_file = '/home/mysql/logs/slow.log'; set GLOBAL slow_query_log = ON;
通用查询日志:可开启可关闭,全局动态参数。
set GLOBAL general_log_file = '/home/mysql/data/oracle.log'; set GLOBAL general_log =ON;
更新日志:可关闭,可开启,全局静态参数。/etc/my.cnf 参数文件设置:log_slave_updates = ON
安全检查建议开启全部的日志配置。在整改的过程中,开启这些日志消耗性能是一定的,其中,通用查询日志的消耗最明显,产生的日志量的问题也是很常见。咨询业务侧,该数据库的业务比较繁忙,那么通用查询日志的问题就比较显著,进行对通用日志处理。
【通用日志处理】
于是对通用日志产生的日志量的问题进行处理。
需求:开启通用日志,每周日定时清理日志,保存3份有效日志记录备份,记录清理日志。
测试最终效果如下:

主要实现功能的脚本如下:
cat > mysql_generlog_clean.sh
######################################################################
# mysql_generlog_clean.sh
# This script is clean mysql generlog
# Author CZT
######################################################################
#!/bin/sh
mysqladmin=`which mysqladmin` ---定义mysql命令环境变量
mysql=`which mysql`
user="root" ---注意进行操作的用户权限
passwd="xxx"
time=`date +%Y%m%d%H%M`
general_log=`mysql -u${user} -p${passwd} -Ne "show variables like 'general_log_file';" 2>/dev/null |grep general_log_file|awk '{print $2}'` ---取当前设置通用日志的日志路径
mv ${general_log} ${general_log}_bak.${time}
mysqladmin -u$user -p$passwd flush-logs general 2>/dev/null
gzip ${general_log}_bak.${time} ---对历史通用日志进行压缩
var_count=`ls -lrt ${general_log}_bak*|wc -l`
if [ $var_count -gt 3 ]
then
echo "gt 3"
var_del_count=`expr $var_count - 3` ---判断保留3份历史日志
ls -lrt ${general_log}_bak* |awk '{print $9}'|head -$var_del_count> del_bakfile_list.txt
while read LINE
do
echo $LINE
rm -f $LINE ---删除旧日志备份文件
done<del_bakfile_list.txt ---记录删除历史日志记录
else
echo "lt 3"
fi
【问题思考】
1, 对于产生的空间大小一定要经过测试,不同的业务产生的影响也有所不同,系统空间问题由于权限限制,不能限制空间,只能手动制定策略;
2, 因为备份中有切换日志操作,对日志备份清理的时间点避免业务高峰期间,防止期间造成告警报错,时间点的选择也是非常重要的环节;
3, 对于参数调整,必须了解该参数属性,是否可以实时开启关闭,对应急处理有非常大的帮助。
【总结】:
1, 对于安全整改配置时,一定要评估好风险,防止产生问题;
2, 对于日志量的问题,脚本可以举一反三处理;
3, 对于安全整改配置时,必须全面了解参数属性,便于应急的处理。
MySQL关于日志配置安全整改及处理方法的更多相关文章
- Logger日志配置级别说明及设置方法、说明
日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j ...
- 转载【MySQL】MySQL5.X常用日志配置及5.7和5.6主从复制的区别
转载:https://blog.csdn.net/zyb378747350/article/details/78728886 2)MySQL5.7和5.6主从复制的区别: . 5.6之后默认binlo ...
- MySQL查询日志总结
MySQL查询日志介绍 MySQL的查询日志记录了所有MySQL数据库请求的信息.无论这些请求是否得到了正确的执行.默认文件名为hostname.log.默认情况下MySQL查询日志是关闭的.生产环境 ...
- mysql bin log配置及查看
mysql执行sql可以通过设置mysql bin 日志进行记录查看 mysql bin日志配置如下: log_bin:on log_bin_basename:bin文件路径及名前缀(/var ...
- MySQL查询日志介绍
MySQL查询日志介绍 MySQL的查询日志记录了所有MySQL数据库请求的信息.无论这些请求是否得到了正确的执行.默认文件名为hostname.log.默认情况下MySQL查询日志是关闭的.生产环境 ...
- 删除MySQL二进制日志
服务器上的120G SSD硬盘空间用了92%,检查后发现,原来是 MySQL的二进制日志没有及时清除,占用了大量的空间, 于是直接用命令:reset master 一把删干净了. 1 reset ma ...
- MySQL慢日志查询全解析:从参数、配置到分析工具【转】
转自: MySQL慢日志查询全解析:从参数.配置到分析工具 - MySQL - DBAplus社群——围绕数据库.大数据.PaaS云,运维圈最专注围绕“数据”的学习交流和专业社群http://dbap ...
- MySQL 慢查询日志配置与简析
MySQL慢查询日志配置与简析 By:授客 QQ:1033553122 <1> 查看是否开启慢查询日志 SHOW VARIABLES LIKE 'slow%'; 说明: a. 如果sl ...
- mysql中日志的配置与分析
默认情况下,如果日志没有配置,则只记录错误日志,记录到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下) [mysqld_sa ...
随机推荐
- B
baababblebabblerbabebabelbaboonbabybabyhoodBabylonBabylonianbacchanalbacchanalianbachelorbacillusbac ...
- An Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache Kafka, too!)
01 Mar 2018 Piotr Nowojski (@PiotrNowojski) & Mike Winters (@wints) This post is an adaptation o ...
- kubernete 本地持久化存储 kube-controller-manager的日志输出 + pvc pv 概念 -- storageclass 概念
1.mysql持久化存储 [root@pserver78 0415villa]# cat latestmysql.yaml |grep -v '^#' apiVersion: v1 kind: Ser ...
- PHP 练习(新闻发布)
1.新闻发布主页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...
- 基于 HTML5 WebGL 的 3D 工控裙房系统
前言 工业物联网在中国的发展如火如荼,网络基础设施建设,以及工业升级的迫切需要都为工业物联网发展提供了很大的机遇.中国工业物联网企业目前呈现两种发展形式并存状况:一方面是大型通讯.IT企业的布局:一方 ...
- 追逐心目中的那个Ta
申明:全篇皆为作者臆想,浪漫主义代表派作品,若有雷同,纯属巧合 人生最难过的不就是在一无所有的年纪里遇到了最想呵护一生的人,而在拥有一切的时候却失去了不顾一切的心. 长夜漫漫,本是相思人,偏听多情曲, ...
- gorose使用示例
package main import ( "fmt" "github.com/gohouse/gorose" //import Gorose _ " ...
- Android艺术——Bitmap高效加载和缓存代码分析(2)
Bitmap的加载与缓存代码分析: 图片的压缩 比如有一张1024*768像素的图像要被载入内存,然而最终你要用到的图片大小其实只有128*96,那么我们会浪费很大一部分内存,这显然是没有必要的,下面 ...
- Python——socketserver编程(客户端/服务器)
一.socketserver是标准库中的高级模块,它的目标是简化很多多样板代码,是创建网络客户端和服务器所必须的代码.(事件驱动) 二.模块类 BaseServer :包含核心服务器功能和mix-in ...
- Lodop条形码竖条和值右端不对齐的解决方法
当Lodop条形码设置的宽度比较短,数值比较多的时候,会出现条码的竖条和右端不对齐.个人测试了一下,发现解决办法有三种:1.增加条形码的宽度.2.隐藏条码本身的值,用text文本代替.3.修改条形码下 ...