从物理文件恢复MySQL数据库
是否可以从物理数据库文件恢复MySQL数据库。我有一个具有以下文件类型的目录: client.frm从物理文件恢复MySQL数据库,mysql,backup,restore,Mysql,Backup,Restore,是否可以从物理数据库文件恢复MySQL数据库。我有一个具有以下文件类型的目录: client.frm client.MYD client.MYI 但要再多20张桌子 我通常使用mysqldump或类似的工具来获取1个SQL文件中的所有内容,那么如何处理这些类型的文件呢?是的!只需将它们添加到数据库文件夹(取决于操作系统),并运行诸如“MySQL Fix Permissions”之类的命令。这将重新存储数据库。也要确保对文件设置了正确的权限。我曾经将这些文件复制到mysql数据库的数据库存储文件夹
client.MYD
client.MYI 但要再多20张桌子
我通常使用mysqldump或类似的工具来获取1个SQL文件中的所有内容,那么如何处理这些类型的文件呢?是的!只需将它们添加到数据库文件夹(取决于操作系统),并运行诸如“MySQL Fix Permissions”之类的命令。这将重新存储数据库。也要确保对文件设置了正确的权限。我曾经将这些文件复制到mysql数据库的数据库存储文件夹中,该数据库正在工作,启动数据库并等待它“修复”这些文件,然后用mysqldump提取它们。mysql MyISAM表是三个文件的组合:
- FRM文件是表定义
- MYD文件是存储实际数据的地方
- MYI文件是存储表上创建的索引的地方
/var/lib/mysql/
)
您应该在服务器未运行时执行此操作。使用MySql 5.1(Win7)。要重新创建DBs(InnoDbs),我已替换以下目录(my.ini参数)的所有内容:
之后,我启动了MySql服务,一切正常。如果要恢复文件夹,请不要忘记将文件chown-R MySql:MySql
chown-R MySql:MySql/var/lib/MySql data
否则,在尝试删除数据库或添加新列等时会出错 然后重新启动MySQL
service mysql restart
我也有同样的问题,但根据上面的说明,无法成功恢复数据库 我只能从我的Ubuntu操作系统中恢复mysql数据库文件夹。我的问题是如何用那些不可读的mysql数据文件夹恢复我的数据库。所以我切换回win7操作系统作为开发环境 *注 我有一个在win7中运行的现有数据库服务器,我只需要几个数据库文件就可以从恢复的文件中检索。为了成功地从Ubuntu操作系统恢复数据库文件,我需要新安装mysql数据库服务器(与我的win7操作系统中的Ubuntu操作系统版本相同),以恢复旧数据库服务器中的所有内容
希望这些对我有帮助,因为没有其他东西对我有用 根据@Vicent的回答,我已经恢复了MySQL数据库,如下所示: 第一步。关闭Mysql服务器 第二步。在数据库文件夹中复制数据库(在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
或
步骤6(可选):我的站点配置为将文件存储在特定位置,然后我将这些文件复制到相应的位置
步骤7:启动Mysql服务器。一切都会回来享受它
就是这样
查看更多信息:在我的例子中,只需删除tc.log In/var/lib/mysql就足以再次启动mariadb/mysql。我在尝试从一个幸运的未删除的Docker卷中恢复意外删除的Docker容器(oraclelinux的mysql)时遇到了这个问题,该Docker卷的物理文件中包含DB数据 因此,我所要做的就是将物理文件中的数据转换为可导入的
.sql
文件,以使用数据库和数据重新创建容器
我尝试过,但在重新启动后遇到了一些针对相同表空间ID的多个文件。我意识到在某些文件夹/文件上做开放式伤害手术是相当棘手的
对我有效的解决方案是将
my.cnf
中的datadir=
临时更改为可用文件夹,然后重新启动MySQL服务器。它做得很好 图标保持橙色,错误日志为空,直到我意外发现我必须替换/更新my.cnf
文件中的名称,从新PC中的旧目录名wamp64
到wamp
。这仅适用于MyISAM表。InnoDB将其表和索引存储在一个表空间*,默认情况下,该表空间由3个文件ibdata1、ib_logfile0和ib_logfile1组成。要恢复数据库,还需要这些文件。*每个表的表空间是可能的,但不是默认的,他说他有.frm.myi和.myd文件。然后,我假设这是MyISAM tables。这是一个很有价值的答案,但为了让事情顺利进行,我必须更进一步:因为我必须以root用户身份登录才能还原文件,所以运行mysqld
进程的mysql
用户无法访问它们。在mysql数据目录上执行chmod-R mysql:mysql.
操作既快又简单,但在此之前,要弄清楚为什么我所有的resoterd数据库似乎都没有表需要更长的时间。在这里,我想你的意思是chown而不是chmod要重述一些重要的注释,你可能必须chown
cop
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