【运维笔记】数据库无法启动,数据库炸后备份恢复数据

news2024/11/15 23:36:43

事情起因

在做docker作业的时候,把卷映射到了宿主机原来的mysql数据库目录上,宿主机原来的mysql版本为8.0,docker容器版本为5.6,导致翻车。

具体操作

备份目录

将/var/lib/mysql备份到~/mysql_backup:cp /var/lib/mysql ~/mysql_backup -r

重装mysql

教程

第一次恢复数据

尝试根据备份文件进行恢复。

把备份的数据库guess_word_game拷贝到新的数据库文件目录中:

# 关闭mysql服务 systemctl stop mysqld
mkdir /var/lib/mysql/guess_word_game cp ~/mysql_backup/guess_word_game/* /var/lib/mysql/guess_word_game/ -r
# 修改所有者
chown -R mysql:mysql /var/lib/mysql
# 启动mysql服务
systemctl start mysqld

重启mysql服务后,发现没有guess_word_game数据库。

覆盖ibdata1到数据目录中:

# 关闭mysql服务 systemctl stop mysqld
cp ~/mysql_backup/ibdata1 /var/lib/mysql
# 修改所有者
chown -R mysql:mysql /var/lib/mysql

重启mysql服务,发现启动失败

查看日志less /var/log/mysqld.log

file

又炸了–,重装吧,原因可能是我用hyperf的migrate建表了,然后导致数据不对。

第二次恢复数据

查阅文档,终于找到解决方法:博客网址,只需把备份目录中的文件迁移到数据库目录中即可,然后再把需要恢复的数据库文件夹迁移进去。

file

  • ibdata1:保存表中元信息,mysql8把表中元信息整合到了.ibd中了
  • ib_logfile0/1:redo日志
  • ib_buffer_pool:缓冲池
  • auto.cnf:存储了server-uuid的值,集群模式下有用
  • mysql.ibd:存储着一些MySQL服务器内部的元数据信息,例如用户权限、存储引擎、字符集等等

迁移完后,嗯,不出意外的话,又出意外了。

file

这里说mysql版本号太旧,新建的文件是80032版本的,而数据库版本是80031版本的,尼玛这也不兼容,好烦,只能重装新版mysql了。

重装之后,数据恢复了555555

file

有可能是我在/etc/my.cnf中写了innodb_force_recovery=8,删掉再重启试试

file

嗯,我又把redo_log迁移过去了,一夜回到解放前。吐了。。。

第三次恢复数据

不用重装mysql,直接删除/var/lib/mysql目录,这次只迁移ibdata1、mysql.ibd和对应数据库文件夹,更改文件夹权限,然后重启mysqld服务,发现不报错了,并且数据得到恢复。

file

可以发现,密码没有重置、且对数据库操作权限都在,所以判断这些内容都存在mysql.ibd中

总结

  • mysql无法启动时,立即将数据文件备份,数据文件目录默认在:/var/lib/mysql中。
  • innodb_force_recovery:故障时候强制恢复,使用这个的时候可以忽略错误正常启动mysql,具体见官方文档(文档中有数字1-6的具体解释,我也不知道数字8代表什么,我就不知道在哪个博客看到8我就照搬了–,没自己脑子)
  • 各个文件的意义
    • ibdata1:保存表中元信息,mysql8把表中元信息整合到了.ibd中了
    • ib_logfile0/1:redo日志
    • ib_buffer_pool:缓冲池
    • auto.cnf:存储了server-uuid的值,集群模式下有用
    • mysql.ibd:存储着一些MySQL服务器内部的元数据信息,例如用户权限、存储引擎、字符集等等
    • .ibd:储存了表中的数据信息,B+树

其他

其实恢复还有几种方法,比如说:

  • 通过innodb_force_recovery参数强制启动mysql服务后,对数据库数据进行转储sql(适用于无bin log的情况)
  • 通过binlog进行数据恢复(没试过,下次试一下)
  • 通过备份进行数据恢复(最差方法)

在数据恢复中犯的错误

照搬内容,不了解别人为什么这么做,比如说照搬第二次恢复数据中别人的操作步骤,导致把redolog二次迁移,而这次故障原因就是redolog的问题

参考资料

innodb_force_recovery

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1950569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

沃尔玛1P账号智能宠物用品市场的商机与策略——WAYLI威利跨境助力商家

近年来,随着人们生活水平的提高和对宠物陪伴需求的增长,宠物经济正在全球范围内蓬勃发展。其中,智能宠物用品市场作为新兴赛道,蕴藏着巨大的商机。对于拥有沃尔玛1P账号的卖家而言,这是一个不容错过的蓝海市场。 智能宠…

工作流 Flowable

工作流包括业务流和审批流等业务流程。 在一个流程系统中,任务间往往存在复杂的依赖关系,为保证pipeline的正确执行,就是要解决各任务间依赖的问题,这样DAG结合拓扑排序是解决存在依赖关系的一类问题的利器。DAG ( Directed Acyc…

m4a怎么转mp3?m4a转mp3的几种方法教程

m4a怎么转mp3?M4A音频格式的全称MPEG-4 Audio,是一种音频压缩格式。这种格式以其卓越的音质和相对较小的文件大小而广受欢迎,尤其是在音乐存储、在线流媒体以及音频编辑等领域。M4A格式被广泛应用于苹果公司的产品中,如iPhone、iP…

深度解析离岗识别检测算法在企业管理中的价值

在现代化企业管理中,员工离岗问题是影响工作效率和团队协作的重要因素。传统的员工管理方式主要依靠人工监督和考勤系统,然而,这些方法存在明显的不足,例如耗费人力、难以实时监控等。随着人工智能和视觉分析技术的发展&#xff0…

MySQL练手 --- 1934. 确认率

题目链接:1934. 确认率 思路 由题可知,两个表,一个表为Signups注册表,另一个表为Confirmations信息确认表,表的关联关系为 一对一,且user_id作为两个表的连接条件(匹配字段)&#…

Arthas在线诊断案例实战整理

会一直持续更新。。。 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时…

Wonder3D 论文学习

论文链接:https://arxiv.org/abs/2310.15008 代码链接:https://github.com/xxlong0/Wonder3D 解决了什么问题? 随着扩散模型的提出,3D 生成领域取得了长足进步。从单张图片重建出 3D 几何是计算机图形学和 3D 视觉的基础任务&am…

【MATLAB APP】建立独立桌面APP

背景:已有MATLAB APP的.mlapp文件,但客户提出需要可以直接使用的exe文件。 要求:点开即用,无需下载MATLAB。使用者无法修改APP的代码。 一、环境配置 APP创建者:安装MATLAB R2023a,配置Application Compile…

【C++笔试强训】day05

游游的you 思路 贪心:优先组成 you,最少的字母决定了you的数量。需要注意:如果oo剩下n个,那么相邻oo的个数是n-1个,而不是n/2个。 例如 oooooo oo oo oooo oo 6个o,两两组合有3对,掐头去尾有…

为什么样本方差(sample variance)的分母是 n-1?

样本均值与样本方差的定义 首先来看一下均值,方差,样本均值与样本方差的定义 总体均值的定义: μ 1 n ∑ i 1 n X i \mu\frac{1}{n}\sum_{i1}^{n} X_i μn1​i1∑n​Xi​ 也就是将总体中所有的样本值加总除以个数,也可以叫做总…

让你的程序有记忆功能。

目录 环境 代码 环境 大语言模型: gpt-40-mini Mem0: Empower your AI applications with long-term memory and personalization OpenAPI-Key: Mem0-Key: 代码 import osfrom dotenv import load_dotenv from openai import OpenAI from m…

UE5.4内容示例(1)- 学习笔记

https://www.unrealengine.com/marketplace/zh-CN/product/content-examples 《内容示例》是学习UE5的基础示例,可以用此示例熟悉一遍UE5的功能 模型与材质部分 StaticMeshes FBX_Import_Options Material_Advanced Material_Decals Material_Instances Material_N…

免费好用!还在用Stable Diffusion生艺术字?阿里AI艺术字生成工具,推荐试试!(附详细教程)

大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年,也一名 AIGC 爱好者,持续分享更多前沿的「AI 工具」和「AI副业玩法」,欢迎一起交流~ 曾经那个口口声声对X小鹿说,「自己不太适合写文章…

【VUE】个人记录:父子页面数据传递

1. 父传子 在父页面中&#xff0c;调用子页面的组件位置处&#xff0c;通过“&#xff1a;”进行参数传递 <child-component :childData"parentData"></child-component>parentData对象&#xff0c;需要在父页面的data中进行初始化声明 在子页面中&am…

深入探索PHP框架:Symfony框架全面解析

1. 引言 在现代Web开发领域&#xff0c;PHP作为一种广泛使用的服务器端脚本语言&#xff0c;其框架的选择对于项目的成功至关重要。PHP框架不仅能够提高开发效率&#xff0c;还能确保代码的质量和可维护性。本文将深入探讨Symfony框架&#xff0c;这是一个功能强大且灵活的PHP…

Java 序列流:Java 对象的序列化和反序列化详解

1.概念 序列化是指将一个对象转换为一个字节序列&#xff08;包含对象的数据、对象的类型和对象中存储的属性等信息&#xff09;&#xff0c;它可以将多个InputStream对象串联起来&#xff0c;使得它们可以被当作一个单一的输入流来处理&#xff0c;以便在网络上传输或保存到文…

【反证法】932. 漂亮数组

本文涉及知识点 分治 数学 反证法 LeetCode932. 漂亮数组 如果长度为 n 的数组 nums 满足下述条件&#xff0c;则认为该数组是一个 漂亮数组 &#xff1a; nums 是由范围 [1, n] 的整数组成的一个排列。 对于每个 0 < i < j < n &#xff0c;均不存在下标 k&#x…

ChatGPT的原理和成本

ChatGPT就是人机交互的一个底层系统&#xff0c;某种程度上可以类比于操作系统。在这个操作系统上&#xff0c;人与AI之间的交互用的是人的语言&#xff0c;不再是冷冰冰的机器语言&#xff0c;或者高级机器语言&#xff0c;当然&#xff0c;在未来的十来年内&#xff0c;机器语…

CSRF(Cross-site request forgery)

一、概述 1、CSRF定义 CSRF是一个web安全漏洞&#xff0c;该漏洞通过引诱用户来执行非预期的操作。该漏洞使得攻击者能够绕过同源策略&#xff0c;同源策略是一种用来阻止不同网站相互干扰的一种技术。 CSR跨站请求伪造&#xff0c;攻击者利用服务器对用户的信任&#xff0c…

MySQL练手 --- 1174. 即时食物配送 II

题目链接&#xff1a;1174. 即时食物配送 II 思路&#xff1a; 题目要求&#xff1a;即时订单在所有用户的首次订单中的比例。保留两位小数 其实也就是 即时订单 / 首次订单 所以&#xff0c;先求出首次订单&#xff0c;在首次订单的基础上寻找即时订单即可 解题过程&#x…