首頁 > 軟體

生產誤操作mv根分割區恢復資料過程

2020-06-16 17:39:07

誤操作恢復記錄(如何掛在其他硬碟的lvm捲)

生產環境 CentOS7

誤操作過程

執行mv * /mysql_back命令,因為要講mysql自動備份的資料庫檔案挪到對應資料夾下。但是執行該命令時所在路徑為/ 根目錄,導致將系統所有檔案都挪到/mysqlbak 資料夾下,系統基本崩潰,除了bash的內建命令cd還能去ls 等/usr/bin系統命令都已經找不到。

恢復思路

  • 硬碟上的虛擬機器系統重新啟動已經無法啟動
  • 硬碟上的資料只是被mv到/mysqlbak 資料夾下,應該還沒有被刪除
  • 需要通過媒介(光碟或者u盤)中的linux系統啟動(非救援模式,救援也無法重新整理整個作業系統的檔案結構了,還有可能導致資料丟失)
  • 將硬碟掛在到光碟啟動的微型Linux系統上,通過網路拷貝出去

設定光碟內的linux環境

  1. 通過光碟啟動,選擇安裝Centos7

  2. 選擇語言後,進入安裝設定介面,不要設定硬碟,只設定網路(方便通過網路將資料拷出)

設定ip地址確保能夠存取到接收資料的機器

檢查舊硬碟上的檔案系統,預設都是LVM

按下Ctrl+Alt+Win+ F2切換到安裝光碟的Linux的後台終端介面
通過檢視/dev /dev/mapper 及mount命令可以看到,光碟的linux系統並沒有自動將硬碟的lvm識別,並載入,/dev/mapper 只有live-開頭的光碟的lvm邏輯卷。

通過pvscan lvscan vgscan 命令可以看到實際上能夠檢索出lvm卷組,但是當前狀態是inactive,需要啟用 參考文章:Moving a volume group to another system

上圖不清楚貼一個 虛擬機器模擬環境截圖

執行命令啟用lvm卷組,並通過lvscan檢視邏輯卷已經active,檢視/dev/多了一個centos目錄,並且舊硬碟的邏輯卷root也出現了

生產上的截圖可以看出出現在了/dev/mapper 下

掛載舊硬碟的lvm卷組

帶上 -o ro 引數,已唯讀模式存取硬碟資料,避免損失資料

檢查舊資料完整性,遷移舊資料

可以看到mv命令把大部分資料都移到/mysqlbak 目錄下,還有一部分因為許可權或者關機的原因沒有移動完,因此有可能資料檔案沒有丟失,但會有損壞

檢查需要拷貝的資料檔案,通過scp或者sftp等方式轉移到新的環境,並匯入新機器,啟動測試資料是否完整。

遷移舊的mysql資料庫檔案到新的機器上去

參考MySQL資料庫遷移
/var/lib/mysql 下所有檔案(除了ib_logfile* 和 *.err)到新的機器下的/var/lib/mysql/資料夾下

注意修改許可權 否則啟動時會失敗

chown -R mysql:mysql /var/lib/mysql/* 

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-06/132492.htm


IT145.com E-mail:sddin#qq.com