本指南旨在作为故障排除资源和诊断MySQL设置的起点。

有时,MySQL表损坏,这意味着发生了错误,并且其中的数据无法读取。

损坏表的一些常见原因是:MySQL服务器在写数据的时候停止。外部程序同时修改由服务器修改的表。机器意外关闭,计算机硬件失败,在MySQL代码中有软件BUG。

如果你怀疑某个表已损坏,则应在故障排除之前对数据目录进行备份或修复表,这将有助于减少数据丢失的风险。

首先,停止MySQL服务:sudo systemctl stop mysql

然后将所有数据复制到新的备份目录中,在Ubuntu系统上,默认的数据目录是/var/lib/mysql/ :cp -r /var/lib/mysql /var/lib/mysql_bkp

备份后,你准备开始检测表是否已实际损坏,如果表使用MyISAM存储引擎,则可以通过从MySQL提示符运行CHECK TABLE语句来检查它是否已损坏:CHECK TABLE table_name;

此输出中将出现一条消息,以便你知道它是否已损坏,如果MyISAM表确实损坏,通常可以通过发出REPAIR TABLE语句来修复它:REPAIR TABLE table_name;

假设修复成功,你将在输出中看到如下所示的消息:Output+--------------------------+--------+----------+----------+

| Table | Op | Msg_type | Msg_text |

+--------------------------+--------+----------+----------+

| database_name.table_name | repair | status | OK |

+--------------------------+--------+----------+----------+

但是,如果表仍然损坏,那么MySQL文档有一些修复损坏表的方法建议。

如果损坏的表使用了InnoDB存储引擎,那么修复它的过程将不同,InnoDB是MySQL 版本5.5后的默认存储引擎,它有自动的损坏检查和修复操作,InnoDB通过在读取的每个页面上执行校验和来检查损坏的页面,如果发现校验和不符,它将自动停止MySQL服务器。

很少需要修复InnoDB表,因为InnoDB有崩溃恢复机制,该机制可以在服务器重新启动时解决大多数问题,但是,如果你确实遇到了需要重建已损坏的InnoDB 表的情况,MySQL文档建议使用转储和重新加载的方法,这包括重新获取对已损坏表的访问,使用mysqldump实用程序创建表的逻辑备份,然后将表重新加载回数据库。

请注意,重新启动MySQL服务以查看这样做是否允许你访问服务器:sudo systemctl restart mysql

如果服务器仍然崩溃或无法访问,那么启用force_recovery选项的可能是有帮助的,通过编辑mysqld.cnf文件来完成这个操作:sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]部分中,添加以下行:/etc/mysql/mysql.conf.d/mysqld.cnf. . .

[mysqld]

. . .

innodb_force_recovery=1

保存并关闭文件,然后再次尝试重新启动MySQL服务,如果可以成功访问已损坏的表,请使用mysqldump实用工具将表数据转储到新文件,mysqldump database_name table_name > out.sql

然后从数据库中删除表,为了避免重新打开MySQL提示,你可以使用以下语法:mysql -u user -p --execute="DROP TABLE database_name.table_name"

然后,使用刚才创建的转储文件还原该表:mysql -u user -p < out.sql

注意,InnoDB存储引擎通常比旧MyISAM引擎更有容错能力,但是使用InnoDB的表仍然可能被破坏,由于它自动恢复功能的存在,表损坏和崩溃的风险就明显降低了。

mysql修复损坏表_在MySQL中,如何修复损坏的表相关推荐

  1. mysql auto_increment建表_在mysql表中创建一个ID auto_increment(在事实之后)

    小编典典 例如,这是一个具有主键但不是的表AUTO_INCREMENT: mysql> CREATE TABLE foo ( id INT NOT NULL, PRIMARY KEY (id) ...

  2. mysql shell 所有表_删除mysql数据库中所有表的shell脚本

    分享一个可以删除mysql中所有表的shell脚本,代码如下: 复制代码 代码示例: #!/bin/bash # 删除mysql中所有表 # 示例: # Usage: ./script user pa ...

  3. mysql创建带日期的表_在MySQL中创建带有日期的临时表

    要创建带有日期的临时表,请在MySQL中使用CREATE TEMPORARY TABLE.以下是语法- 语法create temporary table yourTableName( yourColu ...

  4. mysql 的新建查询怎么弄_在Navicat中如何新建数据库和表并做查询

    上一篇文章,小编给大家分享了在Navicat中如何远程连接数据库,没有来得及上车的小伙伴可以戳这篇文章:在Ubuntu14.04中配置mysql远程连接教程.今天小编给大家分享一下如何在Navicat ...

  5. mysql打开表_查看mysql中的表,以及操作

    第一步 还是先开启mysql 然后登录mysql,如果还不会这两部的 大佬 请看上一篇博客 谢谢 第二部  输入命令 show databases: 查看该数据库下有哪些库(注意这里 show dat ...

  6. mysql视图和中间表_数据库设计中的14个技巧

    时 间:2006-09-15 00:00:00 作 者: 摘 要:数据库设计中的14个技巧 正 文: 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关 ...

  7. mysql数据库check命令_利用mysqlcheck命令快速修复mysql数据库

    表索引异常,修复msql表索引(表引擎:myisam) myisamchk --safe-recover /usr/local/mysql/data/ename_news/dede_arccache ...

  8. 如何用mysql创建orders表_《MySQL必知必会》学习笔记

    本书所用的表: 68.png 67.png 66.png 65.png 64.png 63.png 第一章:了解SQL 数据库:保存有组织的数据的容器(通常是一个文件或一组文件). 数据库软件:DBM ...

  9. mysql 分区表 外键_【MySQL】表分区

    MySQL表分区是MySQL提供的一种简单的数据表水平拆分方法. 分区表是一个逻辑表,它由多个物理子表组成. 目前只有 InnoDB 和 NDB 正式支持表分区. 注:表分区虽然可以缓解单表数据量过大 ...

最新文章

  1. GPT-3数学不及格,愁坏伯克利团队,于是他们出了12500道数学作业
  2. java实现线程间通信的四种方式
  3. 升级php_wamp怎么升级php版本
  4. 重复制造和离散制造特点
  5. Winform中使用代码编写Button按钮的点击事件
  6. css 渐变色_如何设置渐变色的单元格值?
  7. Softmax Derivation
  8. 高德、百度、GPS经纬度转换
  9. php手机号最新正则表达式,最新手机号码正则表达式
  10. 金山打字测试一分钟软件,金山打字2006——一款打字练习及测试软件.doc
  11. c语言邮递员问题算法,中国邮递员问题的求解实例
  12. 解决:outlook邮件内容过宽,打印不全
  13. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
  14. VUE项目中安装和使用vant组件
  15. 系统移植(系统移植环境搭建及简单概念)
  16. github使用指南(史上最全)
  17. java计算机毕业设计基于安卓Android的运动管理软件app
  18. [转]第三届标致汽车设计国际邀请赛部分获奖作品展示
  19. Springboot集成POI
  20. 记录一下获取的动态ip与路由器ip不符所以要纠错的日常

热门文章

  1. 使用mmdetection训练自己的coco数据集(免费分享自制数据集文件)
  2. oracle常用SQL语句(汇总版)
  3. Kaggle:Video Game Sales电子游戏销售分析(Tableau展示)
  4. 甲骨文混合云战略融合数据库技术
  5. 02 Python的自我介绍(数字、字符串、列表)
  6. choice数据库导出股票数据
  7. 1688api 图片搜索功能
  8. C语言:编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。)
  9. GPRS 中的PDP上下文名词解释
  10. 云原生是什么?细数云原生的5大特征