【环境介绍】

系统环境: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关于日志配置安全整改及处理方法的更多相关文章

  1. Logger日志配置级别说明及设置方法、说明

    日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j ...

  2. 转载【MySQL】MySQL5.X常用日志配置及5.7和5.6主从复制的区别

    转载:https://blog.csdn.net/zyb378747350/article/details/78728886 2)MySQL5.7和5.6主从复制的区别: . 5.6之后默认binlo ...

  3. MySQL查询日志总结

    MySQL查询日志介绍 MySQL的查询日志记录了所有MySQL数据库请求的信息.无论这些请求是否得到了正确的执行.默认文件名为hostname.log.默认情况下MySQL查询日志是关闭的.生产环境 ...

  4. mysql bin log配置及查看

    mysql执行sql可以通过设置mysql bin 日志进行记录查看   mysql bin日志配置如下:   log_bin:on log_bin_basename:bin文件路径及名前缀(/var ...

  5. MySQL查询日志介绍

    MySQL查询日志介绍 MySQL的查询日志记录了所有MySQL数据库请求的信息.无论这些请求是否得到了正确的执行.默认文件名为hostname.log.默认情况下MySQL查询日志是关闭的.生产环境 ...

  6. 删除MySQL二进制日志

    服务器上的120G SSD硬盘空间用了92%,检查后发现,原来是 MySQL的二进制日志没有及时清除,占用了大量的空间, 于是直接用命令:reset master 一把删干净了. 1 reset ma ...

  7. MySQL慢日志查询全解析:从参数、配置到分析工具【转】

    转自: MySQL慢日志查询全解析:从参数.配置到分析工具 - MySQL - DBAplus社群——围绕数据库.大数据.PaaS云,运维圈最专注围绕“数据”的学习交流和专业社群http://dbap ...

  8. MySQL 慢查询日志配置与简析

    MySQL慢查询日志配置与简析 By:授客 QQ:1033553122   <1> 查看是否开启慢查询日志 SHOW VARIABLES LIKE 'slow%'; 说明: a. 如果sl ...

  9. mysql中日志的配置与分析

    默认情况下,如果日志没有配置,则只记录错误日志,记录到syslog,配置文件 /etc/mysql/conf.d/mysqld_safe_syslog.cnf (ubuntu下) [mysqld_sa ...

随机推荐

  1. Spring-扫描注解原理,注解自动扫描原理分析

    注解自动扫描原理分析 在spring的配置文件中加入如下代码,spring便开启了自动扫描,那么它的底层到底是如何实现的呢? <context:component-scan base-packa ...

  2. pytorch Debug —交互式调试工具Pdb (ipdb是增强版的pdb)-1-在pytorch中使用

    参考深度学习框架pytorch:入门和实践一书第六章 以深度学习框架PyTorch一书的学习-第六章-实战指南为前提 在pytorch中Debug pytorch作为一个动态图框架,与ipdb结合能为 ...

  3. jar包的MANIFEST.MF文件

    打包可执行jar包时,MANIFEST.MF总是个让人头疼的东西,经常出现这种那种问题. 一个例子: ================================================= ...

  4. 工具篇-Spring boot JPA多数据源

    写这篇博文是因为这个东西坑太多,首先说明下边实现的多数据源不是动态切换的,应该算是静态的. 坑一.pom文件 pom中spring boot以及mysql connector的版本一定要注意. < ...

  5. MD5加密加盐

    Java实现MD5的随机加盐加密,这样以来就很难解密了,必须使用原密码才能正常的登录系统了,以下为Java实现的MD5随机加盐加密,以及使用Apache的Hex类实现Hex(16进制字符串和)和字节数 ...

  6. 布局无法发送,布局发布状态停留在“Transferring”,进度停留在 0%

    按顺序检查如下: 1. 检查Player是否在线?不在线则无法发送任何内容,进度会停留在0%,待Player下次在线时,任务自动开始传输. Player在线,Messenger上可以看到Player名 ...

  7. xadmin在Django 1.11中的使用及中英文切换

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com xadmin是一个强大的替代django admin的管理后台,github地址为:https://g ...

  8. DAY10、函数的参数

    一.实参:为形参传递值 调用函数时,实参可以由常量,变量,表达式三种的组合 1.位置实参:必须按照位置的顺序,从左到右为形参传递值 fn1(10, 20, 30) fn1(30, 20, 10) 2. ...

  9. Python之常见算法介绍

    一.算法介绍 1. 算法是什么 算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求的输 ...

  10. Sublime怎么安装Package control组件

    Sublime怎么安装Package control组件 藏色散人 藏色散人 2018-11-26 14:30:51 原创 Sorry, your browser does not support e ...