是否可以从物理数据库文件中恢复MySQL数据库。我有一个具有以下文件类型的目录:
client.frm
client.MYD
client.MYI
但是还有大约20张桌子。
我通常使用mysqldump或类似工具来获取1个SQL文件中的所有内容,那么处理这些类型文件的方法是什么?
答案 0 :(得分:119)
MySQL MyISAM表是三个文件的组合:
您应该可以通过在数据库文件夹中复制它们来进行恢复(在linux中,默认位置为/var/lib/mysql/
)
您应该在服务器未运行时执行此操作。
答案 1 :(得分:29)
从@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/
上查看更多信息答案 2 :(得分:7)
如果要恢复文件夹,请不要忘记将文件chown到mysql:mysql
chown -R mysql:mysql /var/lib/mysql-data
否则在尝试时会出错删除数据库或添加新列等。
并重启MySQL
service mysql restart
答案 3 :(得分:7)
我遇到了同样的问题但是没有根据上面的说明成功恢复数据库。
我只从Ubuntu OS中恢复了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 服务器
希望这些会有所帮助,因为我找不到解决问题的方法。
答案 4 :(得分: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 Service,一切正常。
答案 5 :(得分:1)
是的!只需将它们添加到您的数据库文件夹(取决于操作系统)并运行诸如“MySQL修复权限”之类的命令。这重新存储了数据库。另请注意,在文件上也设置了正确的权限。
答案 6 :(得分:0)
我曾经将这些文件复制到数据库存储文件夹中,用于运行的mysql数据库,启动数据库并等待它“修复”文件,然后用mysqldump提取它们。
答案 7 :(得分:0)
就我而言,只需删除/ var / lib / mysql中的tc.log就足以再次启动mariadb / mysql。
答案 8 :(得分:0)
我遇到了这种情况,试图从幸运的未删除的Docker卷中恢复意外删除的Docker容器(oraclelinux的MySQL),该Docker卷中包含物理文件中的DB数据。
因此,我要做的就是将数据从物理文件转换为.sql
可导入文件,以使用数据库和数据重新创建容器。
我尝试了biolin's solution,但是重启后遇到了一些[InnoDB] Multiple files found for the same tablespace ID
错误。我意识到,对某些文件夹/文件进行开放式手术非常棘手。
对我有用的解决方案是暂时将datadir=
中的my.cnf
更改为可用文件夹,然后重新启动MySQL服务器。它做得很好!
答案 9 :(得分:0)
图标保持橙色,错误日志为空,直到我偶然发现我必须在新 PC 中将 my.cnf
文件中的名称从旧目录名称 wamp64
替换/更新为 wamp
.