操作系统宕机如何找回MySQL数据

发布时间:2021-10-11 11:47:26 作者:iii
来源:亿速云 阅读:122

这篇文章主要介绍“操作系统宕机如何找回MySQL数据”,在日常操作中,相信很多人在操作系统宕机如何找回MySQL数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”操作系统宕机如何找回MySQL数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

操作系统宕机如何找回MySQL数据

一、概述

如果Linux操作系统宕机,启动不了,救援模式(rescue installed system)也行不通的时候,那么该机器上的MySQL数据还能恢复吗?如果能,怎么恢复呢?带着这个问题我们做个实验。
 

二、环境介绍

准备两台虚拟机,虚拟机软件为virtualbox。

IP 192.168.56.81 该虚拟机上面运行了MySQL,后面模拟这个机器崩溃,然后将MySQL数据抢救回来。

“81”上的文件:

操作系统宕机如何找回MySQL数据

“81”上的MySQL数据库:

操作系统宕机如何找回MySQL数据

IP 192.168.56.71 该虚拟机为新机器,后面需要将“81”上的数据库迁移到“71”这台机器上。
 

三、开始实验

删除“81”机器上的/boot目录文件,然后强制重启。

操作系统宕机如何找回MySQL数据

这时候系统启动失败,报error: file ‘/grup2/i386-pc/normal.mod’ not found.

操作系统宕机如何找回MySQL数据

关闭故障虚拟机“81”,选择强制退出。

操作系统宕机如何找回MySQL数据

将故障虚拟机“81”的硬盘挂载到新的虚拟机“71”上,启动新的虚拟机“71”。

操作系统宕机如何找回MySQL数据

通过lsblk能看到sdb就是新挂载的磁盘。

操作系统宕机如何找回MySQL数据

建立挂载点,挂载新的磁盘,提示mount: unknown filesystem type ‘LVM2_member’

[root@oracletest ~]# mkdir /newmnt
[root@oracletest ~]# mount /dev/sdb2 /newmnt
mount: unknown filesystem type 'LVM2_member'

这是因为/dev/sdb2是一个物理卷,不能直接挂载,需要挂载该物理卷对应的逻辑卷。

查看逻辑卷(这个可能需要等一会才查看得到),可以看到LV Status为NOT available。

操作系统宕机如何找回MySQL数据

使用vgchange -ay /dev/vg激活逻辑卷组(vg是逻辑卷组名字),可以看到LV Status为available。

操作系统宕机如何找回MySQL数据

挂载逻辑卷,可以看到文件已经找回来了。

[root@oracletest ~]# mount /dev/vg/lvroot /newmnt
[root@oracletest ~]# cd /newmnt
[root@oracletest newmnt]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var[root@oracletest newmnt]# cd /newmnt/root
[root@oracletest root]# ls
important.txt  install.sh  mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
[root@oracletest root]# cat important.txt 
this is important text!

接下来是恢复MySQL数据库。原理很简单,跟迁移MySQL没区别,就是将原MySQL文件迁移到新的目录,然后起库。

首先在新的虚拟机“71”上面安装跟故障虚拟机中相同版本的MySQL(安装过程略……)。

查看原MySQL的参数文件,确定MySQL日志文件和数据文件的目录。

[root@oracletest root]# cat /newmnt/etc/my.cnf[mysqld]
# basic settings #
...
basedir = /usr/local/mysql
datadir = /opt/mydata/data
tmpdir = /opt/mydata/tmp
log_bin = /opt/mydata/log/binlog/binlog
...

查看原MySQL的数据文件。

[root@oracletest root]# cd /newmnt/opt/mydata/[root@oracletest mydata]# lltotal 12drwxr-xr-x 6 995 1000 4096 Feb 11 14:03 datadrwxr-xr-x 4 995 1000 4096 Feb 11 14:03 logdrwxr-xr-x 2 995 1000 4096 Feb 11 14:03 tmp

创建相关目录。

mkdir -p /opt/mydata/data
mkdir -p /opt/mydata/tmp
mkdir -p /opt/mydata/log/binlog
chown -R mysql:mysql /opt/mydata

拷贝MySQL文件到对应的目录。

cp -r /newmnt/etc/my.cnf /etc
cp -r /newmnt/opt/mydata/data /opt/mydata/cp -r /newmnt/opt/mydata/log/binlog /opt/mydata/log/
chown -R mysql:mysql /opt/mydata # 这一步的目的是由于原始文件在挂到新的机器上时所属用户和所属组会丢失,需要重新更改成mysql组

启动MySQL。

[root@oracletest ~]# service mysql start
Starting MySQL.2021-04-08T11:39:26.437943Z mysqld_safe error: log-error set to '/opt/mydata/log/error.log', however file don't exists. Create writable for user 'mysql'.The server quit without updating PID file (/opt/mydata/data[FAILED]est.pid).

报错,提示没有error.log,那就创建一个,再启动MySQL。

[root@oracletest ~]# touch /opt/mydata/log/error.log[root@oracletest ~]# chown -R mysql:mysql /opt/mydata/log/error.log[root@oracletest ~]# service mysql start
Starting MySQL..      [  OK  ]

可以看到数据库的表也找回来了!

操作系统宕机如何找回MySQL数据
 


到此,关于“操作系统宕机如何找回MySQL数据”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. mysql5.7 找回密码
  2. 独立解决数据库宕机问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:PHP错误与异常的处理

下一篇:如何用PHP和树莓派开发一个比特币或以太坊交易机器人

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》