从物理文件恢复MySQL数据库

Abd*_*aly 128 mysql backup restore

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

client.frm
client.MYD
client.MYI

但是还有大约20张桌子.

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

Vin*_*ent 123

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

  • FRM文件是表定义.
  • MYD文件是存储实际数据的位置.
  • MYI文件是存储在表上创建的索引的位置.

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

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

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

bio*_*inh 39

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

步骤1.关闭Mysql服务器

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

sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/
Run Code Online (Sandbox Code Playgroud)

第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
Run Code Online (Sandbox Code Playgroud)

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

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

sudo chown mysql:mysql /var/lib/mysql/ibdata1
Run Code Online (Sandbox Code Playgroud)

步骤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/
Run Code Online (Sandbox Code Playgroud)

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

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

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1
Run Code Online (Sandbox Code Playgroud)

要么

sudo chown -R mysql:mysql /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

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

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

这就对了.

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

  • +1详细的分步说明.但我编辑了一些陈述,以真实地反映它们应该是什么. (4认同)
  • 你救了我的命 (2认同)

Joe*_*vey 8

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

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

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

并重启MySQL

service mysql restart
Run Code Online (Sandbox Code Playgroud)

  • 这实际上不是问题的答案,但很有帮助。 (2认同)

小智 7

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

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

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

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

  2. 停止mysql服务器

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

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

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

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

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