首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDb在Spesefic Row上消失了

问MariaDb在Spesefic Row上消失了
EN

Stack Overflow用户
提问于 2021-03-18 20:56:13
回答 1查看 36关注 0票数 0

在我的数据库中,当从10个表中的2个表中进行选择时,我在spesefic行中给出以下消息:

代码语言:javascript
复制
ERROR 2006 (HY000): MySQL server has gone away

例如,当我尝试的时候:

代码语言:javascript
复制
select * from records where id=238

一切都很好,甚至是这样:

代码语言:javascript
复制
select * from records where id=270

没问题。

但是当你尝试这个的时候:

代码语言:javascript
复制
select * from records where id=239

返回错误:

​

我已经在stackoverflow和google中搜索了这个和所有的引用,提到了增加缓冲区大小和...

但我不认为这个问题与这个主题有关,它似乎一些数据是当前的表。

附言:使用的引擎是innodb

有什么线索吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-19 09:19:49

当操作尝试从损坏的InnoDB表中读取时,MySQL会自行关闭。

这很烦人,但这是我唯一能牢记在心的方法。

在大多数情况下都可以恢复所有数据,但对于MySQL、MariaDB和XtraDB,恢复过程是相同的。

在官方手册https://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html上有很多解释。

但是,从本质上讲,您需要在MySQL配置文件中添加一个名为innodb_force_recovery的选项,重新启动MySQL并尝试SELECT损坏的数据。这个选项从数字1到6,但是在3上面你可能会丢失一些数据。

当您找到一个允许您对这些行进行SELECT的数字时,对整个表执行mysqldump操作,以便在此之后进行恢复。

根据表的状态,您需要在不使用innodb_force_recovery的情况下启动MySQL之前手动删除该文件

代码语言:javascript
复制
rm /var/lib/mysql/myschema/corrupted_table.ibd

这将导致其他问题,但是一旦数据库启动,您将需要删除旧的表空间,在另一个数据库中创建“相同的表”,并交换表空间:

代码语言:javascript
复制
USE a;
ALTER TABLE corrupted_table DISCARD TABLESPACE;
CREATE DATABASE b;
-- import the dump inside database b
-- fisically move the "ibd" file from "b" to "a"
-- mv /var/lib/mysql/a/corrupted_table.idb /var/lib/mysql/b/corrupted_table.idb
USE a;
ALTER TABLE corrupted_table IMPORT TABLESPACE;
DROP TABLE b.corrupted_table;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66691535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档