您好,登錄后才能下訂單哦!
這篇文章主要介紹“操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)”,在日常操作中,相信很多人在操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”操作系統(tǒng)宕機(jī)如何找回MySQL數(shù)據(jù)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
如果Linux操作系統(tǒng)宕機(jī),啟動不了,救援模式(rescue installed system)也行不通的時(shí)候,那么該機(jī)器上的MySQL數(shù)據(jù)還能恢復(fù)嗎?如果能,怎么恢復(fù)呢?帶著這個(gè)問題我們做個(gè)實(shí)驗(yàn)。
準(zhǔn)備兩臺虛擬機(jī),虛擬機(jī)軟件為virtualbox。
IP 192.168.56.81 該虛擬機(jī)上面運(yùn)行了MySQL,后面模擬這個(gè)機(jī)器崩潰,然后將MySQL數(shù)據(jù)搶救回來。
“81”上的文件:
“81”上的MySQL數(shù)據(jù)庫:
IP 192.168.56.71 該虛擬機(jī)為新機(jī)器,后面需要將“81”上的數(shù)據(jù)庫遷移到“71”這臺機(jī)器上。
刪除“81”機(jī)器上的/boot目錄文件,然后強(qiáng)制重啟。
這時(shí)候系統(tǒng)啟動失敗,報(bào)error: file ‘/grup2/i386-pc/normal.mod’ not found.
關(guān)閉故障虛擬機(jī)“81”,選擇強(qiáng)制退出。
將故障虛擬機(jī)“81”的硬盤掛載到新的虛擬機(jī)“71”上,啟動新的虛擬機(jī)“71”。
通過lsblk能看到sdb就是新掛載的磁盤。
建立掛載點(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。
使用vgchange -ay /dev/vg激活邏輯卷組(vg是邏輯卷組名字),可以看到LV Status為available。
掛載邏輯卷,可以看到文件已經(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ù)庫的表也找回來了!
到此,關(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í)用的文章!
免責(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)容。