从恢复物理文件MySQL数据库

问题描述 投票:119回答:8

是否有可能从物理数据库文件还原一个MySQL数据库。我有一个具有以下文件类型的目录:

client.frm client.MYD client.MYI

但约20多桌。

我通常使用mysqldump或类似的工具把一切在1个SQL文件究竟什么是处理这些类型的文件的方式吗?

mysql backup restore
8个回答
121
投票

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

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

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

而服务器运行的不是你应该这样做。


34
投票

从@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/


8
投票

如果要恢复的文件夹,不要忘记将文件执行chown到MySQL:MySQL的 chown -R mysql:mysql /var/lib/mysql-data 否则试图删除数据库或添加新列等时,你会得到错误..

并重启MySQL

service mysql restart

7
投票

我有同样的问题,但没有成功恢复基于上述说明的数据库。

我只得到了从我的Ubuntu OS恢复mysql数据库文件夹。我的问题是如何与那些不可读的MySQL数据文件夹恢复我的数据库。现在,我切换回的开发环境Win7操作系统。

*注:我有一个现有的数据库服务器在Win7运行,我只需要几个数据库文件从恢复的文件检索。要成功恢复从Ubuntu的操作系统数据库文件,我需要从Ubuntu的操作系统全新安装的MySQL数据库服务器相同的版本在我的Win7操作系统恢复在旧的数据库服务器的一切。

  1. 从恢复的文件再拍新的MySQL数据库服务器的版本相同。
  2. 停止MySQL服务器
  3. 复制恢复文件夹,并粘贴在(C:\ ProgramData \ MySQL的\ MySQL服务器5.5 \数据)MySQL数据库存储。
  4. 复制位于Linux的MySQL的安装文件夹中的文件ibdata1中,并将其粘贴(C:\ ProgramData \ MySQL的\ MySQL服务器5.5 \数据)。就在右侧前更换现有的或制作备份。
  5. 启动MySQL服务器,并检查是否已成功恢复数据库文件。
  6. 在我目前使用的MySQL服务器使用恢复的数据库简单地导出恢复的数据库和导入我现有的MySQL服务器。

希望这些将帮助,因为我没有找到一个解决我的问题。


2
投票

与MySQL 5.1(Win7的)。要重新创建数据块(InnoDbs)我把它换成以下迪尔斯(my.ini的PARAMS)的全部内容:

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

从那以后,我开始MySQL服务和一切工作正常。


1
投票

是的!只需将它们添加到你的数据库文件夹(视操作系统而定),并运行一个命令,如“MySQL的修复权限”。这将重新存储数据库。看得太认为正确的权限在文件藏汉设置。


0
投票

有一次,我已将这些文件复制到数据库中存储文件夹为其工作的MySQL数据库,启动数据库,并等待它“修复”的文件,然后使用mysqldump提取它们。


0
投票

在我的情况下,简单地移除tc.log在/ var / lib中/ MySQL的足以再次启动MariaDB的/ MySQL的。

© www.soinside.com 2019 - 2024. All rights reserved.