首页
站点统计
技术支持
友链
关于我
Search
1
CentOS7官方停止支持,yum源变更
229 阅读
2
苹果笔记本实现用户登录钉钉通知功能
219 阅读
3
麒麟操作系统安装达梦数据库DM8 V8版本
208 阅读
4
Ubuntu22.04配置vsftp服务
190 阅读
5
台式电脑DIY配置单之2024.06
186 阅读
默认分类
电脑3C
Linux运维
生活杂谈
游戏娱乐
Windows专题
网络互联
登录
Search
标签搜索
PHP
Linux
麒麟OS
Win11
电脑
Typecho
Mac OS
雪中悍刀行
Redis
Joe
windows
祝福
SHELL
Mysql
达梦数据库
阿里云
SSH
CentOS
域名转移
网络
清阳
累计撰写
37
篇文章
累计收到
13
条评论
首页
栏目
默认分类
电脑3C
Linux运维
生活杂谈
游戏娱乐
Windows专题
网络互联
页面
站点统计
技术支持
友链
关于我
搜索到
1
篇与
Mysql
的结果
2025-02-09
记一次GCP云SQL数据库问题导致的线上故障
记一次GCP云SQL数据库问题导致的线上故障本文记录了一次由于GCP SQL云数据库异常导致的线上故障接到业务部门反馈数据库查询异常。运维小伙伴第一时间排查确认:1、登录运维系统检查监控日志发现一切正常。2、登录GCP web控制台查看SQL状态发现一切正常。3、登录服务器使用mysql命令行连接数据库进行查询检测发现有报错。如下:[game@server-1 ~]$ mysql -h 10.1.2.3 -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1344693 Server version: 8.0.31-google Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; ERROR 2013 (HY000): Lost connection to MySQL server during query mysql> use JobScheduleDb; No connection. Trying to reconnect... Connection id: 1344727 Current database: *** NONE *** ERROR 1184 (08S01): Aborted connection 1344727 to db: 'unconnected' user: 'root' host: '10.1.2.3' (init_connect command failed) mysql> select JobName from JobScheduleDb.JobScheduleLog limit 1; ERROR 2013 (HY000): Lost connection to MySQL server during query mysql> 总结一下:就是执行任何SQL查询语句均为异常。(也包括root用户)解决办法:在GCP控制台删除当前用户,然后重新创建新用户。再次测试,发现业务正常。联系GCP技术排查确认。GCP也没查到具体原因。事发时GCP后台出现过维护更新日志记录。具体原因扔在排查跟进中。导致的后果:由于常规监控正常,但是业务异常,并且没有相关业务监控,导致事发后过了好久才发现。产生了很不好的影响。完善解决方案1、加强数据库查询监控,监控系统读取数据异常时,及时告警通知人员介入处理。2、加强业务监控,业务不正常一定要及时告警出来。(业务监控也不能少)3、这种数据库运行正常,用户查询异常的情况一般很少遇到,总结本次经验教训,监控一定要足够完善,否则很容易被拉出来背锅。2025年3月1日更新经排查确认:可能跟init_connect 'SET NAMES utf8mb4 COLLATE utf8mb4_bin'这行配置有关,具体原因, 检查确认中 已确认,下文作了总结。查看mysql官网文档对于init_connect的解释:服务器将为每个连接的客户端执行的字符串。该字符串由一个或多个 SQL 语句组成,以分号字符分隔。 对于拥有 CONNECTION_ADMIN权限(或弃用SUPER 权限)的用户, 的内容 init_connect不会被执行。这样做是为了避免 的错误值 init_connect阻止所有客户端连接。例如, 值可能包含语法错误的语句,从而导致客户端连接失败。不执行 或 权限init_connect的用户可让他们打开连接并修复该 值。 CONNECTION_ADMINSUPERinit_connect init_connect对于任何密码已过期的客户端用户,将跳过执行。这样做是因为这样的用户无法执行任意语句,因此init_connect 执行失败,导致客户端无法连接。跳过init_connect 执行使用户能够连接并更改密码。 服务器将丢弃由 的值中的语句生成的任何结果集init_connect。解释一下就是 init_connect 设置了mysql用户连接数据库之后执行的第一条sql语句。但是以下两种情况例外:1、具有超级数据库管理权限的用户会跳过。(避免因为设置错误,连不上数据库,无法修改管理配置的情况)2、密码到期的客户端。(避免客户端密码到期后,连接不上无法修改密码。)经过反复修改测试,init_connect 如果设置为'SET NAMES utf8mb4 COLLATE utf8mb4_bin',即带 单引号的方式确实会影响普通用户连接数据库和查询,主要是影响连接后的第一条sql语句执行。 添加时 应为:init_connect = SET NAMES utf8mb4 COLLATE utf8mb4_bin去掉单引号。
2025年02月09日
31 阅读
0 评论
0 点赞