mysql通过拷贝数据库源文件恢复数据方法

215次阅读
没有评论

共计 1173 个字符,预计需要花费 3 分钟才能阅读完成。

场景:mysql 数据库突发异常无法启动且平时未做备份时的特殊处理办法。一般 MyIASM 可以直接拷贝过去,就可以完成备份的还原。但是如何是 InnoDB 类型的 mysql 数据库时,很多用户发现直接拷贝源文件竟然无法读取数据和使用,这时候一定要将所有 mysql 下的数据一起备份下来,千万不要只备份数据库文件,还需要备份“ibdata1”等文件。

mysql 通过拷贝数据库源文件恢复数据步骤:

第一步:通过 MySQL 的配置文件找到源文件位置,并将源文件拷贝到本地

如下图:

CentOS 系统中 MySQL 的配置文件位置及源文件位置

Ubuntu 系统中 MySQL 的配置文件位置及源文件位置

以上目录位置皆为安装 MySQL 时默认位置!!!

第二步:将 /var/lib/mysql 中的 mysql 目录拷贝出来,mysql 目录中包含了以下文件,如图:

其中 蓝色目录 对应我们的数据库,里面存放的是该数据库的表结构及表数据、索引结构等数据。

mysql、performance_schema、sys这三个库是 MySQL 系统库,其他的是我们自己的数据库,在恢复数据时我们只需要将 ibdata1 和我们自己的库目录拷贝到新的库中去。

第三步:找一台服务器 ( 可以是虚拟机 ),在上面新安装一个 MySQL 服务,安装成功后,将MySQL 服务 stop 掉,再将我们本地保存的待恢复的源文件ibdata1 和我们自己的库目录拷贝到新服务器上 MySQL 的源文件目录 (/var/lib/mysql) 下,并将该目录下的 ib_logfile0、ib_logfile1 两个文件删除掉,然后注意拷贝进去的源文件的权限 ( 即用户、组 ) 是否和 MySQL 安装时的用户和组一致,若不一致,则修改一致后再启动 MySQL 服务,否则可能会出现启动异常或读取不到数据等情况。

第四步:启动成功后,通过工具连接该数据库即可看到恢复的数据,然后就可以导出成 SQL 文件了。

最关键一步:复制的时候,应将数据目录下的ibdata1 文件一并复制过去,并且删除 ib_logfile0,ib_logfile1 等文件!

修改目录权限命令:

# 先进到 /var/lib 目录

cd /var/lib

# 修改 mysql 目录及其下所有子目录和文件的所属用户

chown -R mysql mysql

# 修改 mysql 目录及其下所有子目录和文件的所属用户组

chgrp -R mysql mysql

# 修改拷贝进去的数据库目录的权限与 MySQL 的系统库目录权限一致

chmod 750 yourBaseName

# 修改 ibdata1 文件的权限与 MySQL 的系统自带文件权限一致(可做可不做,我是强迫症)

chmod 640 ibdata1

# 再进入每个拷贝的库文件目录中将其中的文件权限修改一致(可做可不做,我是强迫症)

chmod 640 *

此方法并非百分百有效,仅在应急时使用,平时做好备份!! 平时做好备份!! 平时做好备份!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-06-13发表,共计1173字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)