本文为大家分享了解决mysql存储引擎myisam常见问题的方法,供大家参考,具体内容如下

一、处理myisam存储引擎的表损坏

在使用mysql,可能会遇到过myisam存储引擎的表损坏的情况。如以下情况:

.frm被锁定不能修改

找不到.myi文件(索引文件)

意外结束记录

文件被毁坏

从表处理器得到错误nnn

解决办法1:

使用mysql自带的myisamchk工具进行修复

打开bin目录,可以看到该工具

mysql TABLESAMPLE 为什么用不了 mysql表打不开_文件大小

命令如下

myisamchk -r tablenamer代表recover

myisamchk -o tablename-o参数代表–safe-recover 可以进行更安全的修复

解决办法2:

使用mysql的check table和repair table命令进行修复

check table用来检查表是否有损坏,repair table用来对坏表进行修复。

二、myisam表过大,无法访问问题

首先我们可以通过myisamchk命令来查看myisam表的情况。如下图,我查看admin表

mysql TABLESAMPLE 为什么用不了 mysql表打不开_存储引擎_02

datefile length代表当前文件大小

keyfile length代表索引文件大小

max datefile length代表最大文件大小

max keyfile length代表最大索引大小

可以通过如下命令来进行扩展数据文件大小

alter table table_name max_rows=88888888 avg_row_le=66666

三、数据目录磁盘空间不足

1、针对myisam存储引擎

可以将数据目录和索引目录存储到不同的磁盘空间。

2、针对innodb存储引擎

对于innodb存储引擎的表,因为数据文件和索引文件时存放在一起的。所以无法将他们分离。当磁盘空间出现不足时候,可以增加一个新的数据文件,这个文件放在有充足空间的磁盘上。具体实现是通过innodb_data_file_path中增加此文件。

innodb_data_file_path=/home/mysql/data:10000m;/user/mysql/data:10000m:autoextend

参数修改之后,需要重启服务器,才可以生效。

四、同一台主机上安装多个mysql

除了每个mysql安装目录不能相同外,还需要的是port和socket不能一样。

mysql.sock就是客户端连接与mysql间通信用的。socket文件,只能本机使用,远程连接要通过tcp/ip了。

以上就是mysql存储引擎myisam常见问题解析,谢谢大家的阅读。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!