- 论坛徽章:
- 0
|
请教mysql冷备问题:ERROR 1017 (HY000): Can't find file: 'table' (errno: 2) 和 ERROR 1146 (42S02): Table 'tx' doesn't exist
-----------------------------------------------------------------------------------------------------------------------------
现在在 mysql 迁移上 遇到一个 问题,都查阅资料一整天了还是没有解决 ,请教各位有没有好的办法:
以下是环境配置:
两台物理机器,
A 是 Ubuntu 10 Server ,文件系统是 ext4 , 数据库 版本 是:mysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (i686) using readline 6.1
B机是 SUSE 11 SP1,文件系统是 ext3, 数据库 版本是 :mysql Ver 14.12 Distrib 5.0.67, for suse-linux-gnu (x86_64) using readline 5.2
目标:将 A 机上的 mysql 数据库迁移到 B机,并且保证在B机上正确运行 。
由于数据量极大,ibdata文件大约20G,frm,MYI,MYD大约12G,所以采用以下操作步骤 和现象:
1,停掉A机和B机上的数据库。
2,将A机上 /var/lib/mysql 文件夹下的所有文件scp 到B机的 /var/lib/mysql 后。
3,重启 B机 数据库 service mysql start,发现 一些表 出现ERROR,具体信息例如:
mysql.general_log
ERROR: Can't find file: 'general_log' (errno: 2)
error: Corrupt
大约有1/4的表,19个表出现如此现象。
4,接下来启动数据库,在数据库中select 查看。发现错误,例如 :
ERROR 1017 (HY000): Can't find file: 'general_log' (errno: 2)
ERROR 1017 (HY000): Can't find file: 'slow_log' (errno: 2)
ERROR 1017 (HY000): Can't find file: 'tx' (errno: 2)
也有一次出现:
ERROR 1146 (42S02): Table 'tx' doesn't exist
ERROR 1146 (42S02): Table 'a.log' doesn't exist
google了一下资料,但是解决方法都不对路(以下操作全部是service mysql stop之后执行的):
有的说这个表 '***.frm' 不存在,但是我看了数据库实际是存在的;
有的说是权限问题,但是我的数据库中frm,MYI,MYD文件属主和组都是mysql:mysql,甚至我全部更改了一次 chown -R mysql:mysql /var/lib/mysql,任然无效 ;
有的说是大小写问题,但是我是从ubuntu linux 迁移到 SuSE 上的,检查了大小写绝对没有问题;
有的说是没有安装成功,于是我用光盘再次安装了,还是不行;
甚至下载了最新的mysql版本,安装之后还是不行;
重启mysql服务,不行;
重启SuSE,不行;
我也不敢按照有些建议的drop table之后重新create,这样数据全没有了,肯定不行。
原来在SuSE之间通过copy备份没有问题,在Ubuntu之间copy备份没有问题。但是现在在Ubuntu和SuSE之间copy备份就有问题了。
折磨了我一天了,还请各位多多指教,小白在此先谢谢了。 |
|