美文网首页
centos下mysql通过物理文件恢复数据

centos下mysql通过物理文件恢复数据

作者: Piegg | 来源:发表于2020-09-07 22:02 被阅读0次

日常工作中,可能会遇到数据库“突然“消失的情况,这里不对情况做分析,这次的重点是如何通过物理文件恢复数据。

mysql的每一个数据库都对应存放在一个与数据库同名的文件夹中,文件夹的位置在/var/lib/mysql中:
• 数据文件夹包括两部分内容,一个是.frm创建表的文件,一个是.ibd存放表数据和索引的文件。
• ibdata1是系统表文件,存放的是系统用户表数据(下面会用到,这次做个解释)
这里我说的InnoDB引擎,如果是MyISAM引擎的话文件有区别,自行百度
举个例子:
• 假设现在有一个名为piegg的数据库,那么在/var/lib/mysql中就有一个piegg文件夹
• 假设piegg中有一个名为users的表,那么piegg文件夹中,那么piegg文件夹中就有两个文件,users.frm和users.ibd

现在假设数据库piegg“突然”消失了,表和数据都不见了,但是我们可以看到/var/lib/mysql中有piegg文件夹,那么恭喜你,不用删除跑路了,我们先将mysql文件夹移动/root目录,然后开始恢复

  1. 关闭服务器(重要)
systemctl stop mysqld
  1. 复制数据库文件夹
sudo cp -rf  ~/mysql/piegg /var/lib/mysql/
  1. 更改文件夹权限
sudo chown -R mysql:mysql /var/lib/mysql/piegg
sudo chmod -R 660 /var/lib/mysql/piegg
sudo chown  mysql:mysql /var/lib/mysql/piegg
sudo chmod 700 /var/lib/mysql/piegg

4 复制ibdata1

sudo cp ~/mysql/ibdata1 /var/lib/mysql/
sudo chown mysql:mysql /var/lib/mysql/ibdata1
  1. 复制ib_logfile0和ib_logfile1
sudo cp ~/mysql/ib_logfile0 /var/lib/mysql/
sudo cp ~/mysql/ib_logfile1 /var/lib/mysql/
  1. 更改文件权限
sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0
sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1
  1. 启动服务器
systemctl start mysqld

再次查询数据库,piegg就回来了。

有什么问题,欢迎评论交流~

相关文章

网友评论

      本文标题:centos下mysql通过物理文件恢复数据

      本文链接:https://www.haomeiwen.com/subject/zvhrektx.html