前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在MySQL中检查和修复MyISAM表

如何在MySQL中检查和修复MyISAM表

作者头像
星哥玩云
发布2022-08-17 15:46:21
2.2K0
发布2022-08-17 15:46:21
举报
文章被收录于专栏:开源部署

由于写入不完整,空间不足,MySQL守护程序被杀或崩溃,电源故障等原因,MySQL表可能因各种原因而损坏。 如果MySQL检测到崩溃或损坏的表,则需要先修复它才能再次使用。 本指南将引导您检测崩溃的表以及如何修复MyISAM表。

CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置  见 https://www.linuxidc.com/Linux/2016-03/128880.htm

在MySQL中查找崩溃的MyISAM表

通常一个表在mysql日志中显示为损坏,为了找到日志的位置,你可以在my.cnf中找到它,或者你可以通过以下方式直接在mysql中查看它:

MariaDB [(none)]> show variables like '%log_error%';  +---------------+--------------------------------+  | Variable_name | Value |  +---------------+--------------------------------+  | log_error | /var/lib/mysql/centos7-vm2.err |  +---------------+--------------------------------+  1 row in set (0.01 sec)

然后你可以捕获那个日志

cat /var/lib/mysql/centos7-vm2.err|grep -i crashed

这将返回已记录的任何崩溃的表。 检查所有表的另一种方法是使用mysqlcheck二进制文件

mysqlcheck -A

将检查所有崩溃的表

# mysqlcheck -A  mysql.columns_priv OK  mysql.db OK  mysql.event OK  mysql.func OK  mysql.help_category OK  mysql.help_keyword OK  mysql.help_relation OK  mysql.help_topic OK  mysql.host OK  mysql.ndb_binlog_index OK  mysql.plugin OK  mysql.proc OK  mysql.procs_priv OK  mysql.proxies_priv OK  mysql.servers OK  mysql.tables_priv OK  mysql.time_zone OK  mysql.time_zone_leap_second OK  mysql.time_zone_name OK  mysql.time_zone_transition OK  mysql.time_zone_transition_type OK  mysql.user OK  test.Persons OK  test.tablename OK  test.testtable OK

最后,您也可以通过MySQL直接检查表:

MariaDB [test]> check table testtable;  +----------------+-------+----------+----------+  | Table | Op | Msg_type | Msg_text |  +----------------+-------+----------+----------+  | test.testtable | check | status | OK |  +----------------+-------+----------+----------+  1 row in set (0.00 sec)

修复单个MyISAM表

一旦找到需要修复的表,您可以直接通过MySQL进行修复。 连接后,键入'use databasename'替换包含崩溃表的真实数据库名称:

MariaDB [(none)]> use test

数据库已更改

之后,您需要做的就是输入'repair table tablename',将'tablename'替换为崩溃表的名称:

MariaDB [test]> repair table tablename  -> ;  +----------------+--------+----------+----------+  | Table | Op | Msg_type | Msg_text |  +----------------+--------+----------+----------+  | test.tablename | repair | status | OK |  +----------------+--------+----------+----------+  1 row in set (0.00 sec)

检查并修复所有MyISAM表

您可以使用mysqlcheck和以下命令快速完成此操作

mysqlcheck -A --auto-repair

您将看到每个表后跟一个状态

# mysqlcheck -A --auto-repair  mysql.columns_priv OK  mysql.db OK  mysql.event OK  mysql.func OK  mysql.help_category OK  mysql.help_keyword OK  mysql.help_relation OK  mysql.help_topic OK  mysql.host OK  mysql.ndb_binlog_index OK  mysql.plugin OK  mysql.proc OK  mysql.procs_priv OK  mysql.proxies_priv OK  mysql.servers OK  mysql.tables_priv OK  mysql.time_zone OK  mysql.time_zone_leap_second OK  mysql.time_zone_name OK  mysql.time_zone_transition OK  mysql.time_zone_transition_type OK  mysql.user OK  test.Persons OK  test.tablename OK  test.testtable OK

此命令将尝试检查并修复服务器上每个数据库中的所有MySQL表。 那就是修复MySQL中的MyISAM表。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档