1. 对现有损坏的数据库文件进行备份
cp -rp /var/lib/mysql /backup/
2. 数据目录和文件的说明
每一个数据库对应一个子目录,每个子目录中包含了对应于这个数据库中的数据表的文件。
每一个数据表对应三个文件,它们和表名相同,但是具有不同的扩展名。
tblName.frm文件是表的定义,它保存了表中包含的数据列的内容和类型。
tblName.MYD文件包含了表中的数据。
tblName.MYI文件包含了表的索引
(例如,它可能包含lookup表以帮助提高对表的主键列的查询)。要检查一个表的错误,只需要运行 myisamchk(在MySQL的bin目录下)并提供文件的位置和表名,或者是表的索引文件名:
# 执行对指定表的检查
# myisamchk /var/lib/mysql/dbName/tblName
# myisamchk /var/lib/mysql/dbName/tblName.MYI
# 检查数据库中所有的表
# myisamchk /var/lib/mysql/dbName/*.MYI
# 检查所有数据库中的所有表
# myisamchk /var/lib/mysql/*/*.MYI
如果不带任何选项,myisamchk将对表文件执行普通的检查。如果你对一个表有怀疑,但是普通的检查不能发现任何错误,你可以执行更彻底的检查(但是也更慢!),这需要使用--extend-check选项:
# myisamchk --extend-check /path/to/tblName
对错误的检查是没有破坏性的,这意味着你不必担心执行对你的数据文件的检查会使已经存在的问题 变得更糟。另一方面,修复选项,虽然通常也是安全的,但是它对你的数据文件的更改是无法撤消的。因为这个原因,我们强烈推荐你试图修复一个被破坏的表文件 时首先做个备份,并确保在制作这个备份之前你的MySQL服务是关闭的。
# 修复
myisamchk --safe-recover function_products.myi
MySQL数据库下.frm .MYD .MYI损坏恢复操作——筑梦之路
于 2022-09-19 22:50:44 首次发布