溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

發(fā)布時(shí)間:2021-10-11 11:47:26 來源:億速云 閱讀:117 作者:iii 欄目:編程語言

這篇文章主要介紹“操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)”,在日常操作中,相信很多人在操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

一、概述

如果Linux操作系統(tǒng)宕機(jī),啟動不了,救援模式(rescue installed system)也行不通的時(shí)候,那么該機(jī)器上的MySQL數(shù)據(jù)還能恢復(fù)嗎?如果能,怎么恢復(fù)呢?帶著這個(gè)問題我們做個(gè)實(shí)驗(yàn)。
 

二、環(huán)境介紹

準(zhǔn)備兩臺虛擬機(jī),虛擬機(jī)軟件為virtualbox。

IP 192.168.56.81 該虛擬機(jī)上面運(yùn)行了MySQL,后面模擬這個(gè)機(jī)器崩潰,然后將MySQL數(shù)據(jù)搶救回來。

“81”上的文件:

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

“81”上的MySQL數(shù)據(jù)庫:

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

IP 192.168.56.71 該虛擬機(jī)為新機(jī)器,后面需要將“81”上的數(shù)據(jù)庫遷移到“71”這臺機(jī)器上。
 

三、開始實(shí)驗(yàn)

刪除“81”機(jī)器上的/boot目錄文件,然后強(qiáng)制重啟。

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

這時(shí)候系統(tǒng)啟動失敗,報(bào)error: file ‘/grup2/i386-pc/normal.mod’ not found.

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

關(guān)閉故障虛擬機(jī)“81”,選擇強(qiáng)制退出。

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

將故障虛擬機(jī)“81”的硬盤掛載到新的虛擬機(jī)“71”上,啟動新的虛擬機(jī)“71”。

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

通過lsblk能看到sdb就是新掛載的磁盤。

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

建立掛載點(diǎn),掛載新的磁盤,提示mount: unknown filesystem type ‘LVM2_member’

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

這是因?yàn)?dev/sdb2是一個(gè)物理卷,不能直接掛載,需要掛載該物理卷對應(yīng)的邏輯卷。

查看邏輯卷(這個(gè)可能需要等一會才查看得到),可以看到LV Status為NOT available。

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

使用vgchange -ay /dev/vg激活邏輯卷組(vg是邏輯卷組名字),可以看到LV Status為available。

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)

掛載邏輯卷,可以看到文件已經(jīng)找回來了。

[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!

接下來是恢復(fù)MySQL數(shù)據(jù)庫。原理很簡單,跟遷移MySQL沒區(qū)別,就是將原MySQL文件遷移到新的目錄,然后起庫。

首先在新的虛擬機(jī)“71”上面安裝跟故障虛擬機(jī)中相同版本的MySQL(安裝過程略……)。

查看原MySQL的參數(shù)文件,確定MySQL日志文件和數(shù)據(jù)文件的目錄。

[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的數(shù)據(jù)文件。

[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

創(chuàng)建相關(guān)目錄。

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

拷貝MySQL文件到對應(yīng)的目錄。

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 # 這一步的目的是由于原始文件在掛到新的機(jī)器上時(shí)所屬用戶和所屬組會丟失,需要重新更改成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).

報(bào)錯(cuò),提示沒有error.log,那就創(chuàng)建一個(gè),再啟動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  ]

可以看到數(shù)據(jù)庫的表也找回來了!

操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)
 


到此,關(guān)于“操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI