包含mysql数据库通过文件夹恢复的词条

  • 1、mysql8 ibdata文件丢失怎么恢复数据
  • 2、电脑重装系统后如何恢复Mysql数据库
  • 3、怎么恢复mysql数据库怎么恢复数据
  • 4、怎么从mysql安装目录恢复数据

因为磁盘空间不足,我的一个虚拟机服务器崩溃了。结果数据库服务器进程无法启动,数据也就无法导出。只能想办法从数据库原始文件 ibdata 和 frm 文件中恢复数据库。

因为没有经验,好不容易才找到了恢复方法。特此记录,以备后用。

磁盘空间不足之后,mysqld 进程无法启动,提示“Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)”。这真是让人无比头大,数据库根本连接不上。

目录 Contents

1. 保存原始数据库文件

2. 恢复方法

3. 参考资料:

1. 保存原始数据库文件¶

好在数据库原始文件还在。在我的系统环境和配置情况下,这些文件位于 /var/lib/mysql/ 文件夹下面。假设数据库名是 test,则这些文件表现为:

–mysql

|–test

|–1.frm

|–2.frm

|…

|–mysql

|…

|–ib_logfile0

|–ib_logfile1

|–ibdata1

|…

这些就是原始数据库文件,可以用来恢复数据库。将这些文件额外保存一份,以防万一。

2. 恢复方法¶

我的原始虚拟机完全没有磁盘空间而无法启动数据库服务器进程。虽然试着删除一些不需要的文件,但是数据库却始终无法连接。于是我新建了一个几乎一样的虚拟机(当然磁盘加大了),试图将这些数据库文件导入并恢复数据库。

在经历了很多错误之后,终于找到了正确的方法:

安装完成新服务器之后,通过命令行新建了与原来一样的数据库:数据库名称、用户名、密码都一样。如果有多个数据库需要恢复,就都给建好。(跟配置新服务器一样,参见安装和配置 MYSQL 数据库服务器。)

停止 mysqld 进程

service mysqld stop

将备份的原始数据库文件中的所有 .frm 文件(保持原来的目录结构)和 ibdata1 文件复制到新服务器的数据库文件目录中(如果新服务器操作系统和配置环境一样,那么目录结构也一样),其它文件不要。

使用 -innodb_force_recovery=6参数启动数据库服务器进程,这里是

/etc/init.d/mysqld start -defaults-file=/etc/my.cnf -standalone -console -innodb_force_recovery=6

OK,数据库恢复完成。

1、把原来mysql安装目录下的data文件夹拷出来;

2、卸载掉原来的mysql;

3、重新安装mysql;

4、拷出来的data文件夹里,除了mysql、test子文件夹外的子文件夹,全部都是数据库

简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。

复杂情况下:

从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作。经过如下几种情况的操作。

1. 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 5.0\。结果,失败:数据库连接错误。

2. 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。

3. 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 5.0\data。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,数据可以访问操作。

至此,操作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。

简单情况下:进入原来mysql安装路径下的data文件夹下,找到相应的库和ibdata1,进行copy,就可回复原来的数据。

复杂情况下:

从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作。经过如下几种情况的操作。

1. 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 5.0\。结果,失败:数据库连接错误。

2. 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data下。结果,失败:数据库连接错误。将备份的数据还完覆盖。结果,失败,还是连接不上数据库。

3. 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 5.0\data。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问,因为数据全为零。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原来的ibdata1文件。重启电脑,打开Navicat for MySQL,连接成功,数据可以访问操作。

至此,操作终于成功。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复。但那台机已经重装了系统,也就是说MySQL失效了。

原创文章,作者:K77XT,如若转载,请注明出处:https://www.506064.com/n/126596.html

(0)
K77XTK77XT
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • 论java实现mysql(实现Java)

    本文目录一览: 1、怎样用java连接mysql 2、如何用Java实现MySQL数据库的备份和恢复 3、怎么用java实现mysql数据库的导入导出 4、怎么用java实现mys…

    编程 2024-10-09
  • jquery判断是否隐藏

    在实际的网页开发中,我们常常需要根据元素是否隐藏来进行一些特定的操作。在这种情况下,jquery的hide()函数和show()函数就十分常用。而判断一个元素是否隐藏,则是判断元素…

    编程 2024-10-04
  • PHP中的Float类型

    PHP中的Float类型指的是浮点数,浮点数运算是计算机世界中不可或缺的一部分。本文将从多个方面对PHP中的Float类型进行详细阐述,旨在帮助读者更全面地理解和使用Float类型…

    编程 2024-10-04
  • php示例代码使用mysql,最简单的php代码

    本文目录一览: 1、PHP同时连接多个mysql数据库示例代码 2、求PHP对MYSQL的简单操作代码! 3、PHP7连接mysql数据库方法 4、怎么使用php代码建立mysql…

    编程 2024-10-14
  • Python list()

    list()函数有助于返回 Python 中的列表对象。python 中的列表是有序的,并且有精确的计数。列表组件被编入索引,因此索引从零开始。 **list([iterable]…

    编程 2024-10-03
  • java解析文件,java解析文件时出错

    本文目录一览: 1、在java在如何解析XML文件 2、java解析json格式文件,再保存在数据库怎么做? 3、如何用java解析CSV文件 4、java 怎样解析 excel生…

    编程 2024-10-04
  • javascript:,javascript怎么读

    本文目录一览: 1、javascript是什么意思 2、JavaScript是什么类型语言? 3、请问“javascript:;”是什么意思? 4、标签中href=”j…

    编程 2024-10-04
  • PHP中常用的键名判断函数

    一、isset函数 isset()函数在判断某个变量是否存在时十分常用。它可以判断变量是否被声明,并且不为null。如果变量不存在或者为null,则返回false。否则返回true…

    编程 2024-10-04
  • 微信小程序接收jsonarray,微信小程序接收不到验证码

    本文目录一览: 1、微信小程序 如何解析Bmob返回的JSON数据 2、微信小程序获取JSON数据时遇到多维数组,请教如何获取数据? 3、微信小程序拿到了JSON格式的数据,怎么拿…

    编程 2024-10-12
  • js导航漂浮代码(html漂浮代码)

    本文目录一览: 1、求段网页右下角漂浮的JS代码,放广告用的! 2、求一段JS广告底部漂浮代码 3、浮动窗口的代码 (html/js) 求段网页右下角漂浮的JS代码,放广告用的! …

    编程 2024-10-03

发表回复

登录后才能评论