手动传输 MySQL 数据库

手动传输 MySQL 数据库

我有一个外部硬盘,里面有一个旧机器(我不再拥有它)的不可启动克隆。该机器上有一个 MySQL 安装(v 5.5.19),其中包含几个我想保存的数据库。

我四处寻找,发现有一个{root}/usr/local/mysql/data目录,其中包含与我想要保存的数据库相对应的子目录。

我将其中一个目录复制到我的主机(也运行 MySQL 5.5.19)并正确设置了文件权限和所有权(_mysql:wheel0660.frm 文件上,等等)。

现在,当我登录 PHPMyAdmin 时,我可以看到左侧列出的数据库,括号中显示了正确的表数。但是,当我尝试连接到该数据库时,它说数据库中没有表。

显然,我错过了一些东西。我错过了什么,还有其他更简单的方法吗?我是否可以修改无数的 .cnf 文件以指向外部硬盘驱动器上的 MySQL 文件,然后mysqldump在这些文件上使用?我需要修改哪些文件?

答案1

我想到了!

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

  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. 我保存并关闭my.conf
  5. 我重启了 MySQL 服务器。系统偏好设置中的 MySQL 窗格中有一个警告,提示“/Volumes/Clone/usr/local/mysql/data”没有正确的所有权,但我认为可以忽略它。看到 MySQL 在正确的位置查找数据也让我感到安心。
  6. 我打开了 PHPMyAdmin 并登录。
  7. 我将我关心的数据库导出为 .sql.gz 文件
  8. 我重新关闭了 MySQL 服务器并删除了该/etc/my.cnf文件
  9. 我重新启动了 MySQL 服务器并登录 PHPMyAdmin
  10. 我导入了我的数据库,一切看起来都很棒!

答案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)

我希望这是一个好的开始

相关内容