几个MySQL用户报告收到错误"cp: error reading 'ibdata1': Input/output"当试图复制MySQL数据目录中的文件时。
该错误之后会出现另一条错误消息,指出无法复制ib_logfile。完整的错误信息如下:“cp: error reading 'ib_logfile1': Input/output error”。
错误的原因是什么?
硬件故障或硬盘出现坏道导致错误。您可能会遇到硬件问题,因为在广泛的读写操作期间系统突然关闭,过热等。硬件错误会导致ibdata1损坏。
步骤修复" cp: error reading ' ibdata1 ' input/output "错误
按照下面给出的顺序来解决这个错误:
步骤1—您可以尝试复制ibdata1和其他文件(ibd和from),忽略读(I/O)错误。磁盘转储(dd)命令如下:
# dd if=/var/lib/mysql/ibdata1 of=/disk1/ibdata1 conv=noerror |
dd命令将有问题的ibdata1文件(/var/lib/mysql/ibdata1)逐位复制到输出文件(/disk1/ibdata1)。
进一步的,当dd与…一起使用conv = noerror,如果有一个坏块,它不会在输出文件中写入任何内容。
步骤2—拷贝操作完成后,执行innodb_force_recovery命令检查是否可以启动MySQL服务器。您可以运行innodb_force_recovery值为1到6,直到服务器启动。如果启动,使用以下命令执行mysqldump:
注意:MySQL可能在此过程中崩溃。为了避免这种情况,请尝试一次对一个表进行转储(备份)。
Mysqldump -u -p db_name tbl_name > dumpfilename.sql |
其中,u代表用户名,p代表密码,用于连接MySQL服务器。此外,db_name是包含需要备份的表(tbl_name)和dumpfilename的数据库名。SQL是路径和备份文件的名称。
详细学习如何使用mysqldump命令备份和恢复MySQL数据库。
MySQL服务器无法启动怎么办?
如果服务器没有启动,则无法恢复MySQL表。这就是MySQL修复工具像MySQL的恒星修复会派上用场。该工具帮助修复使用InnoDB和MyISAM存储引擎创建的数据库。
以下是软件的工作原理:
- 下载并安装MySQL软件后,启动Stellar Repair for MySQL。
- 选择MySQL版本并单击浏览选择包含要修复的ibdata1文件的数据文件夹。点击好吧。
- 选择要修复的MySQL数据库并按修复。
- 软件显示修复过程的进度。
- 当出现“修复完成”消息框时,单击好吧。
- 软件预览修复文件中可恢复的组件。
- 选择需要恢复的数据库对象,然后单击保存数据库从文件。
- 在“保存数据库”对话框中,选择MySQL为保存修复后的文件的文件格式,然后单击保存。
注意:您也可以将修复后的文件保存为CSV、XLS或HTML文件格式。
一旦修复的文件被保存,你会看到一个“保存完成”的消息框。
结论
错误"cp: error reading 'ibdata1' input/output"通常是由于硬件故障导致的,并且可能导致ibdata1损坏。尝试使用dd命令将ibdata1和其他数据文件复制到其他驱动器。如果MySQL服务器在这个过程中崩溃了,你需要运行innodb_force_recovery来启动服务器。如果你不能恢复数据,恒星修复MySQL软件可以帮助修复和恢复数据从损坏的数据文件。