是否可以从物理数据库文件恢复 MySQL 数据库。我有一个目录,其文件类型如下:
客户 客户,马里兰州立大学 客户 MYI
但还有20多张桌子。
我通常使用 mysqldump 或类似的工具来获取1个 SQL 文件中的所有内容,那么如何处理这些类型的文件呢?
是的!只需将它们添加到数据库文件夹(取决于操作系统)并运行一个命令,如“ MySQL 修复权限”。这将重新存储数据库。也请注意,正确的权限也设置在文件上。
我曾经将这些文件复制到一个正在运行的 mysql 数据库的数据库存储文件夹中,启动 db 并等待它“修复”这些文件,然后用 mysqldump 解压缩它们。
MySQL MyISAM 表是三个文件的组合:
您应该能够通过将它们复制到数据库文件夹(在 linux 中,默认位置是 /var/lib/mysql/)进行恢复
/var/lib/mysql/
您应该在服务器不运行时执行此操作。
使用 MySql 5.1(Win7)为了重新创建 DBs (InnoDbs) ,我替换了以下 dirs (my.ini params)的所有内容:
datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/" innodb_data_home_dir="C:/MySQL Datafiles/"
之后我开始使用 MySql 服务,一切都很好。
如果你正在恢复文件夹,不要忘记把文件添加到 mysql: mysql < br > < br > chown -R mysql:mysql /var/lib/mysql-data < br > < br > 否则你在删除数据库或添加新列时会出错。.
chown -R mysql:mysql /var/lib/mysql-data
然后重启 MySQL
service mysql restart
我有同样的问题,但不能成功地恢复数据库,根据上面的说明。
我只能从我的 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 服务器
希望这些能有帮助,因为其他的都不管用。
根据@Vicent 的回答,我已经恢复了 MySQL 数据库,如下所示:
步骤1. 关闭 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
或者
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/
在我的例子中,只要删除/var/lib/mysql 中的 tc.log 就足以重新启动 mariadb/mysql。
我在试图从一个幸运的未删除的 Docker 卷中恢复一个意外删除的 Docker Container (oracleinux 的 MySQL)时碰到了这个问题,这个 Docker 卷包含物理文件中的 DB 数据。
因此,我想要做的就是将物理文件中的数据转换成一个 .sql可导入文件,以便用 DB 和数据重新创建容器。
.sql
我尝试了 生物素溶液,但在重新启动后遇到了一些 [InnoDB] Multiple files found for the same tablespace ID错误。我意识到对某些文件夹/文件进行开放性损伤手术是一个相当棘手的问题。
[InnoDB] Multiple files found for the same tablespace ID
对我有效的解决方案是暂时将 my.cnf中的 datadir=更改为可用文件夹并重新启动 MySQL 服务器。它完美地完成了任务!
my.cnf
datadir=
图标保持橙色,错误日志为空,直到我偶然发现我必须在新 PC 中将 my.cnf文件中的旧目录名从 wamp64替换为 wamp。
wamp64
wamp
来自 Biolinh 的答案
在进行了详细的步骤之后,我得到了以下错误:
Mysqlcheck: Got error: 2013: 在执行‘ REPAIR TABLE...’时,查询期间与服务器的连接丢失
然后,我还从备份中复制/var/lib/mysql/mysql 目录,并运行以下命令:
Mysql _ security _ install
之后一切都会好起来的。