当前位置: 首页 >数据库 > 1+N环境-分布式数据库mysql8系列故障重启问题处理

1+N环境-分布式数据库mysql8系列故障重启问题处理

1、背景

多个业务连接异常,navicat连接数据库不稳定,连接进入数据库后也会出现卡死的,连接失败的报错

2、问题分析

2.1 问题描述:

navicat、服务器中连接数据库均复现业务报告的问题,查看后端mysql库日志,mysql主库在连续地故障重启。数据库使用的是主备模式,mysql切换到备库后,备库也开始连续的故障重启。

2.2 原因分析:

检查mysql日志,存在导致数据库异常重启原因:简单理解是,部分数据存放超出表空间,访问时指针会超出该表的访问地址范围,触发mysql bug,导致重启

[ERROR] [MY-012153] [InnoDB] Trying to access page number 2310 in space 13033, space name saledb_jxyd0/sale_contract_info, which is outside the tablespace bounds. Byte offset 0, len 16384, i/o type read. If you get this error at mysqld startup, please check that your my.cnf matches the ibdata files that you have in the MySQL server

Trying to get some variables.

Some pointers may be invalid and cause the dump to abort.

Query (7f5b400336f0): SELECT         p.PROJECT_ID,         s.PROJECT_ID AS SUBJECT_ID,         p.SALE_OPP_ID,         p.APPLY_PERSON,         c.CONTRACT_ID,         c.END_DATE         FROM         project s         JOIN sale_project p ON s.SALE_OPP_ID = p.SALE_OPP_ID         JOIN sale_pro_con_rel r ON r.project_id = s.PROJECT_ID         JOIN sale_contract_info c ON c.CONTRACT_SERIAL_NO = r.CON_SERIAL_NO          WHERE  p.STATUS_CD != '2'

Connection ID (thread ID): 59

Status: NOT_KILLED

日志截图信息:

 1+N环境-分布式数据库mysql8系列故障重启问题处理 _ JavaClub全栈架构师技术笔记

 

 1+N环境-分布式数据库mysql8系列故障重启问题处理 _ JavaClub全栈架构师技术笔记

 

 

 

2.3 处理过程

涉及的表:saledb_jxyd0.sale_contract_info

执行任何该表的操作都会导致数据库重启,官网暂时没有可解决方案,猜测调整数据库innodb 缓存相关参数,依旧无效。与业务协商后,可以删除sale_contract_info表。

操作过程:

1) 注释saledb_jxyd0 该库用户,暂时禁止该用户访问,避免重复触发bug导致数据库重启。

2) 停止主备库双向同步

3) 在备库备份通过备份saledb_jxyd0库时跳过该表的备份,然后恢复到备库,备库无异常后,开启主备库双向同步,恢复数据

4) 备份过程中出现的问题:

sale_project_enter_infosale_project_addtional_recording 这两张表恢复时报错: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline

innodb 默认ROW_FORMAT COMPACT,修改为DYNAMIC既可创建成功。

3、问题总结

本次故障出现的环境:mysql-8.0.30

待讨论部分:本次故障出现之前做了数据库升级,5.78.0系列分别升级后,据目前了解,所涉及的商务项目中,5.7系列未出现问题,8.0.23版本升级之前,也从未出现过该问题。

目前为止有两个环境升级到mysql8.0.30出现bug

Ø  1+N环境 mysql8系列升级之后出现该bug,使用备份恢复方式恢复业务数据

Ø  ****升级所有环境mysql,也有两个业务库出现该bug,也使用备份恢复方式恢复业务数据

目前针对数据库本身,暂无该问题有效的预防方案,升级之前检查数据库没有效果

非漏扫问题,不建议直接升级到mysql8.0.30最新版

作者:Harda
来源链接:https://www.cnblogs.com/harda/p/16940439.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/118513.html

标签:MySQL升级
分享给朋友:

“1+N环境-分布式数据库mysql8系列故障重启问题处理” 的相关文章

sql递归查询 2022年05月17日 21:40:33
性能优化|Mysql优化之Explain精讲 2022年06月02日 21:18:04
mysql 查询数据结果计算百分比 2022年06月11日 10:01:40
mysql 查询某字段最小的记录 2022年06月12日 13:41:31
mysql 查询所有下级 2022年06月12日 13:42:12