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

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

时间:2022-12-01 09:36:57浏览次数:52  
标签:mysql8 数据库 sale 重启 备份 mysql ID 分布式

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

日志截图信息:

 

 

2.3 处理过程

涉及的表:saledb_jxyd0.sale_contract_info

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

操作过程:

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

2) 停止主备库双向同步

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

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

sale_project_enter_info、sale_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.7、8.0系列分别升级后,据目前了解,所涉及的商务项目中,5.7系列未出现问题,8.0.23版本升级之前,也从未出现过该问题。

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

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

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

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

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

标签:mysql8,数据库,sale,重启,备份,mysql,ID,分布式
From: https://www.cnblogs.com/harda/p/16940439.html

相关文章

  • 快速测试SQL Server数据库的连接
    微软的SQLServer数据库应该是中小企业中使用最多的数据库,一般个人测试环境也都是用的它。下面介绍一种快速测试SQLServer数据库连接性的方法:1.新建一下记事本,将后缀名......
  • 1+N环境MySQL8.0.29/30版本BUG处理措施
    背景:前期安全漏扫后,1+N环境中部分MySQL8.0数据库由低版本通过upgrade方式升级到8.0.29版本,后又升级到8.0.30版本。此版本的upgrade升级方式,在执行altertableaddcolmun......
  • PolarDB-X 分布式数据库初体验
    目录1.什么是分布式数据库2.PolarDB-X是什么样的存在2.1产品架构2.2物理拓扑3.部署PolarDB-X3.1安装PXD3.2部署PolarDB-X4.参考1.什么是分布式数据库分布式数据库......
  • 分布式缓存Redis
    RDB持久化AOF持久化 区别  redis主从架构                       ......
  • Redis分布式锁误删情况说明
    辑说明:持有锁的线程在锁的内部出现了阻塞,导致他的锁自动释放,这时其他线程,线程2来尝试获得锁,就拿到了这把锁,然后线程2在持有锁执行过程中,线程1反应过来,继续执行,而线程1执行......
  • 开源分布式事务中间件Seata使用指南
    介绍 Seata是阿里巴巴开源的分布式事务中间件,一种分布式事务解决方案,具有高性能和易于使用的微服务架构。 初衷对业务无侵入:即减少技术架构上的微服务化所带来的分布式事......
  • 腾讯云数据库SaaS致力于构建数据库分布式云,为更多更广的用户提供服务
    大数据时代,数据库SaaS是企业实现降本增效和业务创新的重要抓手。在腾讯全球数字生态大会数据库SaaS专场上,腾讯云发布了多项数据库SaaS产品能力升级,并重点分享了其在......
  • 华为云分布式全系列产品组合,帮助企业轻松上云​
    我们知道,云计算技术从诞生之初就是为了解决传统的计算难题,以服务为中心的架构,让企业获得了“云”时代所带来的诸多便利。随着云计算、大数据等技术的不断发展,传统架构所带......
  • 调研 | 5种分布式事务解决方案优缺点对比
    背景 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免。 ACID指数据库事务正确执行的四......
  • .NET集成Yitter.IdGenerator实现分布式Id,并使用redis自动注册WorkerId
    参考文章多语言新雪花算法(SnowFlakeIdGenerator)添加依赖Install-PackageYitter.IdGenerator-Version1.0.14自动注册WorkerId的动态库下载这是一个go语言版本的......