当前位置:  开发笔记 > 后端 > 正文

从物理文件恢复MySQL数据库

如何解决《从物理文件恢复MySQL数据库》经验,为你挑选了4个好方法。

是否可以从物理数据库文件中恢复MySQL数据库.我有一个具有以下文件类型的目录:

client.frm
client.MYD
client.MYI

但是还有大约20张桌子.

我通常使用mysqldump或类似工具来获取1个SQL文件中的所有内容,那么处理这些类型文件的方法是什么?



1> Vincent..:

MySQL MyISAM表是三个文件的组合:

FRM文件是表定义.

MYD文件是存储实际数据的位置.

MYI文件是存储在表上创建的索引的位置.

你应该能够通过在数据库文件夹中复制它们来恢复(在linux中,默认位置是/var/lib/mysql/)

您应该在服务器未运行时执行此操作.


这仅适用于MyISAM表.InnoDB将其表和索引存储在单个表空间*中,默认情况下由3个文件ibdata1,ib_logfile0和ib_logfile1组成.要恢复数据库,您还需要这些文件.*每表表空间是可能的,但不是默认的
他说他有.frm .myi和.myd文件.然后我假设它是MyISAM表.
herenvardo我认为你的意思不是chmod
有价值的答案,但我必须更进一步才能使事情正常工作:因为我必须以root身份登录才能恢复文件,运行`mysqld`进程的`mysql`用户无法访问它们.在mysql数据目录上执行`chmod -R mysql:mysql .`是快速而简单的,但在此之前,为什么我所有的resoterd DB似乎没有表需要更长时间.

2> biolinh..:

从@Vicent的答案来看,我已经恢复了MySQL数据库,如下所示:

步骤1.关闭Mysql服务器

步骤2.复制数据库文件夹中的数据库(在linux中,默认位置为/ var/lib/mysql).在mysql模式下保留数据库的相同名称和数据库的相同名称.

sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

第3步:更改自己并更改模式文件夹:

sudo chown -R mysql:mysql /var/lib/mysql/database1
sudo chmod -R 660 /var/lib/mysql/database1
sudo chown  mysql:mysql /var/lib/mysql/database1 
sudo chmod 700 /var/lib/mysql/database1

第4步:在数据库文件夹中复制ibdata1

sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

sudo chown mysql:mysql /var/lib/mysql/ibdata1

步骤5:复制数据库文件夹中的ib_logfile0和ib_logfile1文件.

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

记住改变自己并更改这些文件的根目录:

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1

要么

sudo chown -R mysql:mysql /var/lib/mysql

步骤6(可选):我的站点具有将文件存储在特定位置的配置,然后我将这些文件完全复制到相应的位置.

第7步:启动Mysql服务器.一切都回来享受它.

这就对了.

欲了解更多信息,请访问:https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/


+1详细的分步说明.但我编辑了一些陈述,以真实地反映它们应该是什么.

3> Joel Davey..:

如果要还原文件夹,请不要忘记将文件chown到mysql:mysql,

chown -R mysql:mysql /var/lib/mysql-data

否则在尝试删除数据库或添加新列等时会出现错误.

并重启MySQL

service mysql restart


这实际上不是问题的答案,但很有帮助。

4> 小智..:

我有同样的问题,但没有根据上面的说明成功恢复数据库.

我只从我的Ubuntu操作系统中恢复了mysql数据库文件夹.我的问题是如何使用那些不可读的mysql数据文件夹恢复我的数据库.现在我切换回win7 OS用于开发环境.

*注意我有一个在win7中运行的现有数据库服务器,我只需要很少的数据库文件来从恢复的文件中检索.要从Ubuntu OS成功恢复数据库文件,我需要在我的win7操作系统中从Ubuntu OS新安装的新安装的mysql数据库服务器相同版本,以恢复旧数据库服务器中的所有内容.

    从恢复的文件中创建另一个新的mysql数据库服务器相同的版本.

    停止mysql服务器

    复制恢复的文件夹并粘贴在(C:\ ProgramData\MySQL\MySQL Server 5.5\data)mysql数据库中.

    复制位于linux mysql安装文件夹中的ibdata1文件并将其粘贴到(C:\ ProgramData\MySQL\MySQL Server 5.5\data)中.在替换之前,对现有或备份进行过度调整.

    启动mysql服务器并检查是否已成功恢复数据库文件.

    要在我当前使用的mysql服务器中使用恢复的数据库,只需导出恢复的数据库并将其导入我现有的mysql服务器.

希望这些会有所帮助,因为我找不到解决问题的方法.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有