手动传输MySQL数据库

我有一个外部硬盘,有一个旧的机器(我不再有)不可启动克隆。 其中一件事是在这台机器上安装了一个MySQL安装(v 5.5.19),其中有几个我想要保存的数据库。

我绕了一圈,发现有一个{root}/usr/local/mysql/data目录,其中包含的子目录似乎与我想保存的数据库相对应。

我将这些目录之一复制到我的主机(也运行MySQL 5.5.19),并获得文件权限和所有权正确设置( _mysql:wheel0660在.frm文件等)。

当我现在login到PHPMyAdmin时,我可以看到左边列出的数据库,正确数量的表格放在括号中。 但是,当我尝试连接到该数据库时,它说数据库中没有表。

显然,我错过了一些东西。 我错过了什么,还有另一种方法可以做到这一点,可能会更容易? 我可以,也许,改变无数.cnf文件指向我的外部硬盘驱动器上的MySQL文件,然后在这些使用mysqldump ? 我需要修改哪些文件?

我想到了!

为了后代,这是我所做的:

  1. 我杀了MySQL服务器
  2. 我将/usr/local/mysql/support-files/my-small.cnf复制到/etc/my.cnf
  3. 我打开my.cnf并在[mysqld]部分添加了这一行:

     # point the datadir to the old stuff on the external hard drive datadir = /Volumes/Clone/usr/local/mysql/data 
  4. 我保存并closures了my.conf
  5. 我重新启动了MySQL服务器。 系统偏好设置中的MySQL窗格有一个关于“/ Volumes / Clone / usr / local / mysql / data”没有正确的所有权的警告,但我想这是可以忽略的。 看到MySQL正在寻找数据的正确位置,这也令人放心。
  6. 我打开PHPMyAdmin并login。
  7. 我将我关心的数据库导出为.sql.gz文件
  8. 我重新杀了MySQL服务器并删除了/etc/my.cnf文件
  9. 我重新启动MySQL服务器并login到PHPMyAdmin
  10. 我导入了我的数据库,一切都很好看!

你应该做的第一件事是这样的:

 chown -R mysql:mysql /usr/local/mysql/data 

你应该知道InnoDB文件有多大

  • ibdata1中
  • ib_logfile0
  • ib_logfile1

如果ibdata1 <20M,ib_logfile0 = 5M,那么mysql在没有my.cnf的情况下运行。 你应该可以启动mysql。 如果它们大小不同,则需要使用以下命令创buildmy.cnf

 [mysqld] innodb_log_file_size=???? (file of ib_logfile0 in M) 

我希望这是一个好的开始