是否可以从物理数据库文件恢复 MySQL 数据库。我有一个包含以下文件类型的目录:
客户端.frm 客户端.MYD 客户
端
.MYI
但是还有大约 20 张桌子。
我通常使用 mysqldump 或类似工具来获取 1 个 SQL 文件中的所有内容,那么处理这些类型的文件的方法是什么?
MySQL MyISAM 表是三个文件的组合:
您应该可以通过将它们复制到数据库文件夹中来恢复(在 linux 中,默认位置是/var/lib/mysql/
)
您应该在服务器未运行时执行此操作。
根据@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 服务器。一切都回来并享受它。
这就对了。
根据上面的说明,我有同样的问题,但无法成功恢复数据库。
我只能从我的 Ubuntu 操作系统中恢复 mysql 数据库文件夹。我的问题是如何使用那些不可读的 mysql 数据文件夹恢复我的数据库。所以我切换回win7操作系统作为开发环境。
*注意我有一个在 win7 中运行的现有数据库服务器,我只需要几个数据库文件即可从恢复的文件中检索。要从 Ubuntu 操作系统成功恢复数据库文件,我需要全新安装 mysql 数据库服务器(与我的 win7 操作系统中的 Ubuntu 操作系统版本相同)以恢复旧数据库服务器中的所有内容。
从恢复的文件中创建另一个新的 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 服务器。
希望这些会有所帮助,因为没有其他东西对我有用。
如果您正在恢复文件夹,请不要忘记将文件 chown 到 mysql:mysqlchown -R mysql:mysql /var/lib/mysql-data
否则在尝试删除数据库或添加新列等时会出错。
并重新启动 MySQL
service mysql restart
使用 MySql 5.1 (Win7)。为了重新创建数据库(InnoDbs),我替换了以下目录(my.ini 参数)的所有内容:
datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"
之后我启动了 MySql 服务,一切正常。
是的!只需将它们添加到您的数据库文件夹(取决于操作系统)并运行诸如“MySQL Fix Permissions”之类的命令。这重新存储了数据库。还可以看到在文件上设置了正确的权限。
我试图从一个幸运地未删除的 docker 卷中恢复一个意外删除的 Docker 容器(oraclelinux 的 MySQL),该卷中包含物理文件中的数据库数据。
因此,我想做的就是将物理文件中的数据转换为.sql
可导入文件,以使用数据库和数据重新创建容器。
我尝试了 biolin 的解决方案,但在重新启动后遇到了一些[InnoDB] Multiple files found for the same tablespace ID
错误。我意识到对某些文件夹/文件进行开放性损伤手术非常棘手。
对我有用的解决方案是暂时将datadir=
in更改my.cnf
为可用文件夹并重新启动 MySQL 服务器。它完美地完成了这项工作!
我曾经将这些文件复制到正在运行的 mysql 数据库的数据库存储文件夹中,启动 db 并等待它“修复”文件,然后使用 mysqldump 提取它们。
就我而言,只需删除 /var/lib/mysql 中的 tc.log 就足以再次启动 mariadb/mysql。
my.cnf
该图标保持橙色,错误日志为空,直到我意外发现我必须将文件中的名称从旧目录名称替换/更新wamp64
到wamp
新 PC 中。
来自Biolinh的回答
做了详细的程序后,我得到了以下错误:
mysqlcheck:得到错误:2013:执行“修复表...”时查询期间丢失与服务器的连接
然后我还从备份中复制了 /var/lib/mysql/mysql 目录并运行了命令:
mysql_secure_installation
之后一切正常。