【问题标题】:Recover databases from backed up ibdata + frm files on volume从卷上备份的 ibdata + frm 文件中恢复数据库
【发布时间】:2017-06-29 10:27:52
【问题描述】:

我的服务器上的卷上有大约 30 个站点的数据库数据,位于以下目录 /mnt/volume0/var/lib/mysql

该目录包含一个 6.2G 的 ibdata1 文件和包含每个网站的 .frm 文件的目录。

我正在尝试获取数据库的转储,以便将它们移动到另一台服务器,但是访问 mysql 仅显示默认数据库(因为 /etc/mysql/mysql.conf.d/mysqld.cnf 中的 datadir 设置为 /var/lib/mysql

我已尝试将/etc/mysql/mysql.conf.d/mysqld.cnf 中的datadir 更改为/mnt/volume0/var/lib/mysql,但mysql 无法启动。

它抱怨“无法设置 datadir”,我通过在 /mnt/volume0/var/lib/mysql 上运行 chown mysql:mysql mysql/ -R 修复了它,但现在它抱怨 Failed password for root from xxx.xx.xxx.xx port 19192 ssh2

非常感谢任何帮助!

谢谢

【问题讨论】:

  • 最好的办法是做一个mysql转储。但是,如果您无法开始旧安装,那么在新安装中使用相同的 MySQL 版本很重要。

标签: mysql database server


【解决方案1】:

您可以尝试重设密码

mysqld_safe --skip-grant-tables

如果你有一个错误,那么你有一个更大的问题

mysql --user=root mysql
update user set Password=PASSWORD('your new password') where user='root';
flush privileges;
exit;

【讨论】:

  • 在看到您的答案之前,我尝试卸载并重新安装 MySQL。现在,这使我可以将 datadir(详见此处:digitalocean.com/community/tutorials/…)更改为卷上的 mysql 目录(/mnt/volume0/var/lib/mysql),但 mysql 仍然没有获取数据库。有任何想法吗?谢谢
  • 您是否在 datadir 设置之前的一行中写了 [mysqld]?
【解决方案2】:

我最终解决了这个问题,将我本地机器上的/var/lib/mysql/ 的内容替换为/mnt/volume0/var/lib/mysql/ 的内容(来自服务器)。

然后我在尝试启动 MySQL Table 'performance_schema.session_variables' doesn't exist 时遇到了一个错误,我通过在本地机器上升级 MySQL 并重新启动解决了这个错误:https://stackoverflow.com/a/20262826/8231049

现在我可以从本地机器转储数据库了 :)

编辑:在等待 2 天之前无法接受我的回答。到时候就可以了。

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 2012-08-18
    • 2012-06-11
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多