开启mysql审计后引发的问题

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【前言】刚在mysql的测试环境中开启了审计的功能,结果第二天业务人员就反馈测试库登录不。幸好是测试环境,不然就惨了。。。。。   详细报错如下: mysql> insert into test.

【前言】刚在mysql的测试环境中开启了审计的功能,结果第二天业务人员就反馈测试库登录不。幸好是测试环境,不然就惨了。。。。。

 

详细报错如下:

mysql> insert into test.test values (4);
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    76571
Current database: *** NONE ***

 

数据库的日志信息:

7:30:22 [Warning] Aborted connection 76570 to db: 'unconnected' user: 'ipos' host: '192.168.1.20' (init_connect command failed)
7:30:22 [Warning] Duplicate entry '6' for key 'PRIMARY'
7:30:22 [Warning] Aborted connection 76571 to db: 'unconnected' user: 'ipos' host: '192.168.1.15' (init_connect command failed)
7:30:22 [Warning] Duplicate entry '76571' for key 'PRIMARY'
7:30:22 [Warning] Aborted connection 76572 to db: 'unconnected' user: 'ipos' host: '192.168.1.14' (init_connect command failed)
7:30:22 [Warning] Duplicate entry '76572' for key 'PRIMARY'
7:30:24 [Warning] Aborted connection 76573 to db: 'unconnected' user: 'ipos' host: '192.168.1.20' (init_connect command failed)
7:30:22 [Warning] Duplicate entry '76572' for key 'PRIMARY'

 

原因分析:

init-connect存放数据的表脚本如下:

CREATE TABLE logDB.log (`id` int(11) primary key auto_increment, `time` timestamp, `localname` varchar(30), `matchname` varchar(30))

 

因为此处的id值取自processlist的id值;

image 

当数据库不重启的情况下,这个ID值是一直增加的;但是当数据库重新启动之后,processlist显示每个用户的ID值又会从1开始,而如果是这样的话,那么插入到表logDB.log里面的id值便违反了创建的规则;所以就报错了。

 

显示这个数据库每天晚上22点30分都会定时自动重启,符合了问题的场景;

image

 

【解决方法】

1、很明显可以把创建表中id值的primary key 取消掉,但是这样在查找问题的时候可能就会在logDB.log中找到多条记录,通过对时间进行筛选的话,也是可以判断出问题的原因;

2、这是一个比较笨的方法,就是尽量不重启,如果重启的话就把表logDB.log的记录清空一遍;

希望看到前面那篇文档的朋友能够看到这篇,避免这种问题发生在生产系统上面;

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL Java
Mysql开启ssl加密协议及Java客户端配置操作指南
本文主要讲述的是Mysql开启了ssl协议之后,Java客户端如何正确的链接Mysql访问数据
Mysql开启ssl加密协议及Java客户端配置操作指南
|
9月前
|
存储 运维 监控
mysql开启审计日志
mysql开启审计日志
335 0
|
12月前
|
Oracle 关系型数据库 MySQL
迁移MariaDB审计插件(Audit Plugin)到MySQL 5.7---发表到爱可生开源社区
Oracle的MySQL社区版本不带审计插件(Audit Plugin),要想使用审计功能,你可以用Enterprise的版本,不过这需要银子。业界还有一些GPL协议的审计插件,这里我们选择MariaDB的审计插件。
150 0
|
12月前
|
存储 SQL 监控
在MySQL社区版中也用上审计插件
在MySQL社区版中也用上审计插件
523 0
|
缓存 安全 关系型数据库
Mysql给root开启远程访问权限
MySql出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问,所以需要给root账户新增一个远程访问权限。
Mysql给root开启远程访问权限
|
SQL 安全 网络协议
通过RDS MySQL SQL洞察和审计排查如何丢失数据?
最近遇到多次业务方,反馈数据写入成功,但是需要查询使用时,数据确找不到了,所以需要确认数据什么不见了?
通过RDS MySQL SQL洞察和审计排查如何丢失数据?
|
SQL 关系型数据库 MySQL
mysql开启数据库记录日志
mysql开启数据库记录日志
111 0
mysql开启数据库记录日志
|
关系型数据库 MySQL Java
MySQL 中的开启和关闭事务| 学习笔记
快速学习 MySQL中的开启和关闭事务
368 0
MySQL 中的开启和关闭事务| 学习笔记
|
SQL 关系型数据库 MySQL
MySQL 下事务的开启、提交、回滚语句应用|学习笔记
快速学习 MySQL 下事务的开启、提交、回滚语句应用
357 0
MySQL 下事务的开启、提交、回滚语句应用|学习笔记
|
存储 SQL 监控
MySQL企业版之Audit(审计)初体验
MySQL企业版之Audit(审计)初体验
317 0