当前位置: 首页 > news >正文

突发!某大厂机房掉电,MySQL数据库无法启动,紧急恢复过程...

作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理
微信:jem_db
QQ交流群:587159446
公众号:IT邦德

文章目录

  • 前言
    • 📣 1.故障现象
    • 📣 2.故障分析
    • 📣 3.处理过程
      • ✨ 3.1 设置恢复模式启动
      • ✨ 3.2 备份全库数据
      • ✨ 3.3 删除mysql数据
      • ✨ 3.4.恢复数据
    • 📣 4.技能拓展
      • ✨ 4.1 忘记root密码的处理
      • ✨ 4.2 运维常用命令
    • 📣 5.总结

前言

本次故障发生在机房掉电,服务器异常关机,影响了监控系统的后台的MariaDB及MySQL无法启动。

📣 1.故障现象

由于异常断电或者系统异常重启时MySQL
没有正常退出导致MySQL无法启动,启动时报错如下:

Version: ‘5.5.64-MariaDB’ socket: 
‘/var/lib/mysql/mysql.sock’ port: 3306 MariaDB Server
InnoDB: Failing assertion: addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to https://jira.mariadb.org/
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
20240527 10:54:24 [ERROR] mysqld got signal 6 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
To report this bug, see http://kb.askmonty.org/en/reporting-bugs
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed,
something is definitely wrong and this may fail.

📣 2.故障分析

报错中给出了强制恢复数据的方式,
参考MySQL官网链接即可
http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

通过设置innodb_force_recovery
参数不进行回滚才启动数据库。
因为监控数据,可以允许部分数据丢失,所以此种方式可行
innodb_force_recovery = 1

innodb_force_recovery的6个值含义如下:

1 (SRV_FORCE_IGNORE_CORRUPT)
即使服务器检测到损坏的页仍让它运行。
试图使SELECT* FROM tbl_name跳过损坏的索引记录和页,
这样有助于转储表。

2 (SRV_FORCE_NO_BACKGROUND)
阻止主线程和任何清除线程的运行。
如果崩溃会在清除操作中发生,该恢复值会阻止它。

3 (SRV_FORCE_NO_TRX_UNDO)
不要在崩溃恢复后运行事务回滚。

4 (SRV_FORCE_NO_IBUF_MERGE)
阻止插入缓冲合并操作。如果它们会导致崩溃,
不要做这些。不计算表统计。这个值可以永久损坏数据文件。
使用这个值后,准备号删除并重建所有辅助索引。

5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
在启动数据库时不查看撤消日志:InnoDB将即使未完成的事务也作为已提交。
这个值可以永久损坏数据文件。

6 (SRV_FORCE_NO_LOG_REDO)
不要通过恢复对重做日志进行前滚。这个值可能永久损坏数据文件。
数据库页被留在一个陈旧的状态,
这反过来又可能带给B-trees和其它数据库结构更多的损坏。

📣 3.处理过程

✨ 3.1 设置恢复模式启动

vim /etc/my.cnf
添加配置项:
innodb_force_recovery = 1
innodb_purge_thread=0
注意:其中innodb_force_recovery后面的值设置为1
如果1还是不能启动,就再逐步增加为2/3/4等。
直到能启动mysql为止!!!
本次恢复我设置为3后才重启OK

启动成功后测试数据库连接:
mysql -uroot -proot;

✨ 3.2 备份全库数据

mysqldump -uroot -proot
–all-databases > all_mysql_backup.sql

✨ 3.3 删除mysql数据

删除mysql数据之前务必先stop mysql服务
systemctl stop mariadb
cp -r /var/lib/mysql/ /var/lib/mysql.bak
rm -rf /var/lib/mysql/*
重启mysql服务:
正常模式在启动mysql:
vim /etc/my.cnf
注释配置项:
#innodb_force_recovery = 1
#innodb_purge_thread=0
再重启:
systemctl restart mariadb

✨ 3.4.恢复数据

记住一定要先重置下密码:
mysqladmin -u root password root
使用之间备份的sql文件恢复数据:
mysql -uroot -proot
source /root/all_mysql_backup.sql
查看恢复好的数据,搞定~!

📣 4.技能拓展

✨ 4.1 忘记root密码的处理

systemctl stop mariadb
mysqld_safe --skip-grant-tables &
mysql -u root
FLUSH PRIVILEGES;
SET PASSWORD FOR ‘root’@‘%’ = PASSWORD(‘root’);

✨ 4.2 运维常用命令

查询所有数据的大小:
mysql> select concat(round(sum(data_length/1024/1024),2),‘MB’)
as data from information_schema.tables;

当前数据库实例的所有数据库及其容量大小:
select a.SCHEMA_NAME, a.DEFAULT_CHARACTER_SET_NAME,a.DEFAULT_COLLATION_NAME,
sum(table_rows) as ‘记录数’,
sum(truncate(data_length/1024/1024, 2)) as ‘数据容量(MB)’,
sum(truncate(index_length/1024/1024, 2)) as ‘索引容量(MB)’,
sum(truncate((data_length+index_length)/1024/1024, 2)) as ‘总大小(MB)’,
sum(truncate(max_data_length/1024/1024, 2)) as ‘最大值(MB)’,
sum(truncate(data_free/1024/1024, 2)) as ‘空闲空间(MB)’
from INFORMATION_SCHEMA.SCHEMATA a
left outer join information_schema.tables b
on a.SCHEMA_NAME=b.TABLE_SCHEMA
group by a.SCHEMA_NAME, a.DEFAULT_CHARACTER_SET_NAME,a.DEFAULT_COLLATION_NAME
order by sum(data_length) desc, sum(index_length) desc;

📣 5.总结

如果数据库服务器突然断电,尚未保存到磁盘的数据将会丢失。这可能包括尚未提交的事务、缓存中的数据以及正在进行的写操作。当服务器重新启动时,这些数据将无法恢复,可能导致数据不一致或数据丢失的情况,本次的紧急恢复过程,希望能帮助到大家

相关文章:

突发!某大厂机房掉电,MySQL数据库无法启动,紧急恢复过程...

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…...

SpringCloudAlibaba:6.2RocketMQ的普通消息的使用

简介 普通消息也叫并发消息&#xff0c;是发送效率最高&#xff0c;使用最多的一种 依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…...

vue+echart :点击趋势图中的某一点或是柱状图,出现弹窗,并传输数据

样式 在趋势图中点击某一个柱状图&#xff0c;出现下面的弹窗 代码实现 主要是在趋势图页面代码中&#xff0c;在初始化趋势图的设置中&#xff0c;添加对趋势图监听的点击方法 drawChart() {const chartData this.chartData;let option {};if (!chartData.xData?.len…...

2024年上半年软考什么时候查成绩?附查询流程

考试一旦结束&#xff0c;并不意味着与考试相关的事情也就结束了。2024年上半年信息系统项目管理师等软考考试结束后&#xff0c;我们还需要关注考后和证书相关的事情&#xff0c;比如成绩查询、证书领取等等。 2024年上半年软考成绩查询 查询时间&#xff1a;预计在2024年7月…...

css3实现0.5px边框

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>css3实现0.5px边框</title><s…...

U-Net网络

U-Net网络 一、基本架构 各个箭头的解释&#xff1a; conv 3 * 3, ReLU&#xff1a;表示通过一个3 * 3的卷积层&#xff0c;并且该层自动附带一个非线性激活层&#xff08;ReLu&#xff09;copy and crop&#xff1a;表示进行裁剪然后再进行拼接&#xff08;在channel的维度上…...

不拍视频,不直播怎么在视频号卖货赚钱?开一个它就好了!

大家好&#xff0c;我是电商糖果 视频号这两年看着抖音卖货的热度越来越高&#xff0c;也想挤进电商圈。 于是它模仿抖音推出了自己的电商平台——视频号小店。 只要商家入驻视频号小店&#xff0c;就可以在视频号售卖商品。 具体怎么操作呢&#xff0c;需要拍视频&#xf…...

【vue-5】双向数据绑定v-model及修饰符

单向数据绑定&#xff1a;当数据发生改变时&#xff0c;视图会自动更新&#xff0c;但当用户手动更改input的值&#xff0c;数据不会自动更新&#xff1b; 双向数据绑定&#xff1a;当数据发生改变时&#xff0c;视图会自动更新&#xff0c;但当用户手动更改input的值&#xf…...

[STM32-HAL库]AS608-指纹识别模块-STM32CUBEMX开发-HAL库开发系列-主控STM32F103C8T6

目录 一、前言 二、详细步骤 1.光学指纹模块 2.配置STM32CUBEMX 3.程序设计 3.1 输出重定向 3.2 导入AS608库 3.3 更改端口宏定义 3.4 添加中断处理部分 3.5 初始化AS608 3.6 函数总览 3.7 录入指纹 3.8 验证指纹 3.9 删除指纹 3.10 清空指纹库 三、总结及资源 一、前言 …...

【java程序设计期末复习】chapter4 类和对象

类和对象 编程语言的几个发展阶段 &#xff08;1&#xff09;面向机器语言 计算机处理信息的早期语言是所谓的机器语言&#xff0c;使用机器语言进行程序设计需要面向机器来编写代码&#xff0c;即需要针对不同的机器编写诸如0101 1100这样的指令序列。 &#xff08;2&#x…...

ios:Command PhaseScriptExecution failed with a nonzero exit code

问题 使用 xcode 跑项目真机调试的时候&#xff0c;一直报错 Command PhaseScriptExecution failed with a nonzero exit code。 解决 最终靠以下方法解决 删除Podfile.lock文件删除Pods文件删除.xcworkspace文件Pod installCommandShiftK 清理一下缓存 亲测有效...

《拯救大学生课设不挂科第四期之蓝桥杯是什么?我是否要参加蓝桥杯?选择何种语言?如何科学备赛?方法思维教程》【官方笔记】

背景&#xff1a; 有些同学在大一或者大二可能会被老师建议参加蓝桥杯&#xff0c;本视频和文章主要是以一个过来人的身份来给与大家一些思路。 比如蓝桥杯是什么&#xff1f;我是否要参加蓝桥杯&#xff1f;参加蓝桥杯该选择何种语言&#xff1f;如何科学备赛&#xff1f;等…...

数据挖掘案例-航空公司客户价值分析

文章目录 1. 案例背景2. 分析方法与过程2.1 分析流程步骤2.2 分析过程1. 数据探索分析2. 描述性统计分析3. 分布分析1.客户基本信息分布分析2. 客户乘机信息分布分析3. 客户积分信息分布分析 4. 相关性分析 3. 数据预处理3.1 数据清洗3.2 属性约束3. 3 数据转换 4. 模型构建4. …...

决策树与机器学习实战【代码为主】

文章目录 &#x1f6f4;&#x1f6f4;引言&#x1f6f4;&#x1f6f4;决策树使用案例&#x1f6f4;&#x1f6f4;numpy库生成模拟数据案例&#x1f6f4;&#x1f6f4;决策树回归问题&#x1f6f4;&#x1f6f4;决策树多分类问题 &#x1f6f4;&#x1f6f4;引言 决策树是一种经…...

从感知机到神经网络

感知机 一、感知机是什么二、用感知机搭建简单逻辑电路2.1 与门2.2 与非门2.3 或门 三、感知机的局限性3.1 异或门3.2 线性和非线性 四、多层感知机4.1 已有门电路的组合4.2 Python异或门的实现 五、感知机模型5.1 感知机模型5.2 感知机损失函数5.3 感知机学习算法 六、感知机原…...

【HMGD】STM32/GD32 I2C DMA 主从通信

STM32 I2C配置 主机配置 主机只要配置速度就行 从机配置 从机配置相同速度&#xff0c;可以设置第二地址 因为我的板子上面已经有了上拉电阻&#xff0c;所以可以直接通信 STM32 I2C DMA 定长主从通信代码示例 int state 0; static uint8_t I2C_recvBuf[10] {0}; stat…...

leecode 226 翻转二叉树、101 对称二叉树、104 二叉树的最大深度

leecode 226 翻转二叉树、101 对称二叉树、104 二叉树的最大深度 leecode 226 翻转二叉树 题目链接 &#xff1a;https://leetcode.cn/problems/invert-binary-tree/description/ 题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。…...

Redux基础

简介 状态管理工具&#xff0c;集中式管理react、vue、angular等应用中多个组件的状态&#xff0c;是一个库,使用之后可以清晰的知道应用里发生了什么以及数据是如何修改&#xff0c;如何更新的 在项目中添加 Redux 并不是必须的,根据项目需求选择是否引入 Redux 三个原则 …...

国外目标公司的任何一个联系人也许都有意义

我们说跟进一个项目&#xff0c;最好能够联系上拥有决策权的人&#xff0c;不然中间隔着几重关系&#xff0c;所有的更新都需要层层审批申报&#xff0c;特别麻烦&#xff0c;总是要等&#xff0c;也许等到最后就是一场空。如果能够直接和老板或者是拍板的人沟通&#xff0c;则…...

因为本地证书太旧或不全导致的 HTTPS 访问失败问题20240520

因为本地证书太旧或不全导致的 HTTPS 访问失败问题 在生产环境中&#xff0c;我们经常需要使用 curl 命令来测试和调试 HTTPS URL。然而&#xff0c;最近我遇到了一个棘手的问题&#xff1a;在测试环境中使用 curl 可以正常访问某个 URL&#xff0c;但在生产环境中却遇到了 SS…...

ATtiny85轻量级图形库应用与优化

1. Tiny Graphics Library&#xff1a;ATtiny85上的轻量级图形解决方案在嵌入式开发中&#xff0c;为资源受限的MCU添加图形显示功能一直是个挑战。今天我要分享的是一个特别适合ATtiny85等低资源处理器的图形库——Tiny Graphics Library。这个库最大的特点就是完全不需要显示…...

订单状态机实战:代码校验 + SQL 幂等一次讲清

这篇不是“先写 SQL 再补代码”&#xff0c;而是从设计层面把代码层状态机和SQL 幂等更新绑定在一起。状态流转&#xff08;业务真实模型&#xff09; UNPAID -> PAID -> SHIPPED -> COMPLETED UNPAID -> CANCELED PAID -> REFUNDING -> REFUNDED SHIPPED-…...

弯管LRA计算软件(XYZ转LRA)

专业的“弯管LRA计算软件&#xff08;XYZ转LRA&#xff09;”&#xff0c;主要用于将弯管在三维空间中的一系列坐标点&#xff08;XYZ&#xff09;&#xff0c;转换为管道加工所需的关键制造参数&#xff0c;即LRA&#xff08;直线段长度、旋转角度、弯曲夹角&#xff09;。界面…...

PHP中比较两个对象的几种方式小结

在PHP中&#xff0c;比较两个对象并不是一件直接明了的事情&#xff0c;因为对象之间的比较通常依赖于它们的属性和状态&#xff0c;而这些属性和状态可能非常复杂且多样化。PHP提供了几种方式来比较对象&#xff0c;但每种方式都有其特定的用途和限制。1. 使用和运算符在PHP中…...

Amadeus的知识库 | 纯向量检索关键词识别弱?带上BM25算法搞混合检索 + Reranking做召回优化,RAG生成质量大幅增强!

一、引文在之前我们的检索环节只是使用了向量数据库提供的 ANN 算法进行纯向量检索&#xff0c;原因在于它可以通过计算查询向量和文档向量之间的余弦相似度&#xff0c;在极短时间内从整个向量数据库找到几个语义相似的局部最优解。它的强大之处在于擅长理解语义&#xff0c;但…...

避开Trace API的坑:Android方法耗时统计的正确姿势与实战技巧

避开Trace API的坑&#xff1a;Android方法耗时统计的正确姿势与实战技巧 在移动应用开发中&#xff0c;性能优化始终是开发者面临的核心挑战之一。特别是对于音视频、游戏等对帧率敏感的应用场景&#xff0c;毫秒级的性能差异都可能直接影响用户体验。而精准的方法耗时统计&am…...

Lisk SDK安全最佳实践:保护区块链应用免受攻击的10个技巧

Lisk SDK安全最佳实践&#xff1a;保护区块链应用免受攻击的10个技巧 【免费下载链接】lisk-sdk &#x1f529; Lisk software development kit 项目地址: https://gitcode.com/gh_mirrors/li/lisk-sdk Lisk SDK是一款强大的区块链应用开发工具包&#xff0c;专为构建安…...

新手福音:通过快马生成tokenp钱包代码示例,轻松入门区块链开发

作为一名刚接触区块链开发的新手&#xff0c;我最近在学习tokenp钱包的相关知识。刚开始看文档时&#xff0c;那些密钥对、地址生成、签名验证的概念让我一头雾水。直到我尝试用InsCode(快马)平台生成示例代码&#xff0c;才真正理解了这些核心概念。下面分享我的学习过程&…...

别再用临时邮箱了!用Python+Selenium自动化管理你的Augment AI多账户(附完整脚本)

构建可持续的Augment AI自动化账户管理系统 在AI辅助编程工具日益普及的今天&#xff0c;开发者们对高效工具的依赖程度越来越高。Augment AI作为一款强大的代码助手&#xff0c;其免费版本300次的使用限制常常成为开发者工作流中的瓶颈。传统解决方案如手动重置或使用临时邮箱…...

如何利用WebSocket实现biliup的实时直播状态监控与日志推送:完整指南

如何利用WebSocket实现biliup的实时直播状态监控与日志推送&#xff1a;完整指南 【免费下载链接】biliup 自动直播录制、投稿、twitch、ytb频道搬运工具。命令行投稿(B站)和视频下载工具&#xff0c;提供多种登录方式&#xff0c;支持多p。 项目地址: https://gitcode.com/g…...