我有一个外部硬盘,里面有一个旧机器(我不再拥有它)的不可启动克隆。该机器上有一个 MySQL 安装(v 5.5.19),其中包含几个我想保存的数据库。
我四处寻找,发现有一个{root}/usr/local/mysql/data
目录,其中包含与我想要保存的数据库相对应的子目录。
我将其中一个目录复制到我的主机(也运行 MySQL 5.5.19)并正确设置了文件权限和所有权(_mysql:wheel
在0660
.frm 文件上,等等)。
现在,当我登录 PHPMyAdmin 时,我可以看到左侧列出的数据库,括号中显示了正确的表数。但是,当我尝试连接到该数据库时,它说数据库中没有表。
显然,我错过了一些东西。我错过了什么,还有其他更简单的方法吗?我是否可以修改无数的 .cnf 文件以指向外部硬盘驱动器上的 MySQL 文件,然后mysqldump
在这些文件上使用?我需要修改哪些文件?
答案1
我想到了!
为了后代,这就是我所做的:
- 我关闭了 MySQL 服务器
- 我复制
/usr/local/mysql/support-files/my-small.cnf
到/etc/my.cnf
我打开
my.cnf
并添加了以下行[mysqld]
:# point the datadir to the old stuff on the external hard drive datadir = /Volumes/Clone/usr/local/mysql/data
- 我保存并关闭
my.conf
- 我重启了 MySQL 服务器。系统偏好设置中的 MySQL 窗格中有一个警告,提示“/Volumes/Clone/usr/local/mysql/data”没有正确的所有权,但我认为可以忽略它。看到 MySQL 在正确的位置查找数据也让我感到安心。
- 我打开了 PHPMyAdmin 并登录。
- 我将我关心的数据库导出为 .sql.gz 文件
- 我重新关闭了 MySQL 服务器并删除了该
/etc/my.cnf
文件 - 我重新启动了 MySQL 服务器并登录 PHPMyAdmin
- 我导入了我的数据库,一切看起来都很棒!
答案2
你应该做的第一件事是:
chown -R mysql:mysql /usr/local/mysql/data
你应该知道 InnoDB 文件有多大
- ibdata1
- ib_logfile0
- ib_logfile1
如果 ibdata1 小于 20M,且 ib_logfile0 = 5M,则 mysql 运行时没有 my.cnf。您应该能够启动 mysql。如果它们的大小不同,则需要使用以下命令创建 my.cnf
[mysqld]
innodb_log_file_size=???? (file of ib_logfile0 in M)
我希望这是一个好的开始