MariaDB 10.6.8 數(shù)據(jù)庫被覆蓋 從Linux磁盤分區(qū)掃描MariaDB表數(shù)據(jù)文件的碎片頁面恢復(fù)數(shù)據(jù)庫
發(fā)布時間:2024-09-24
Mariadb 10.6.8 三臺節(jié)點的多主集群,數(shù)據(jù)庫sae被刪除后,又新建了相同的表對象并導(dǎo)入部分表數(shù)據(jù) MySQL誤操作數(shù)據(jù)修復(fù) MySQL數(shù)據(jù)庫修復(fù) MySQL頁面碎片收集
客戶名稱: 某半導(dǎo)體相關(guān)領(lǐng)域公司
數(shù)據(jù)類型: MariaDB 10.6.8 on CentOS 7.9
數(shù)據(jù)庫大小: 3800 GB * 3
一、 背景介紹
Mariadb 10.6.8 三臺節(jié)點的多主集群,數(shù)據(jù)庫sae被刪除后,又新建了相同的表對象并導(dǎo)入部分表數(shù)據(jù)。
二、 恢復(fù)可行性分析
Mariadb 10.6.8默認參數(shù)innodb_file_per_table為ON,這樣使得數(shù)據(jù)庫的每個表都有獨立的frm和ibd文件。Mariadb數(shù)據(jù)表以16KB頁面作為基本存儲單位。
在Linux系統(tǒng)中,刪除文件時并非真正從磁盤中刪除文件數(shù)據(jù),系統(tǒng)會將該文件的inode標記為空閑狀態(tài),但文件數(shù)據(jù)并沒有被立即清除。
這樣我們可以使用MySQL誤刪除數(shù)據(jù)掃描工具從磁盤底層恢復(fù)被刪除數(shù)據(jù)庫表的ibd文件塊數(shù)據(jù),然后再使用MySQL表數(shù)據(jù)恢復(fù)工具從ibd文件塊數(shù)據(jù)恢復(fù)被刪除的表數(shù)據(jù)。
Mariadb多主集群的三臺節(jié)點的硬盤都可以被用來恢復(fù)數(shù)據(jù),最后合并恢復(fù)出來的數(shù)據(jù)。
三、 技術(shù)風(fēng)險
以下情況可能導(dǎo)致無法完全恢復(fù)被刪除數(shù)據(jù)庫sae的表數(shù)據(jù):
> 數(shù)據(jù)庫sae被刪除后又新建了相同表并導(dǎo)入部分數(shù)據(jù)
> Mariadb所在Linux服務(wù)器的后臺數(shù)據(jù)程序一直在運行
我們會盡最大努力從三臺節(jié)點的硬盤上恢復(fù)最大化的數(shù)據(jù)。
四、 數(shù)據(jù)庫恢復(fù)過程
先恢復(fù)Mariadb集群第一個節(jié)點的硬盤sdh上的數(shù)據(jù)。第二個節(jié)點的恢復(fù)方法類似。
1. 從磁盤底層掃描表ibd文件塊數(shù)據(jù)
通過修改MySQL誤刪除數(shù)據(jù)掃描工具的底層掃描邏輯,使得適用于XFS文件系統(tǒng)上Mariadb表數(shù)據(jù)塊,將編譯好的mysqlrecoveryv7上傳至第一臺Linux服務(wù)器。開始掃描硬盤數(shù)據(jù),至8點已完成掃描第一個節(jié)點硬盤3.8TB數(shù)據(jù),得到260GB的Mariadb表ibd文件塊數(shù)據(jù)。
2. 從ibd塊數(shù)據(jù)恢復(fù)表數(shù)據(jù)
客戶將掃描出來的260GB Mariadb表ibd文件塊數(shù)據(jù)打包壓縮后發(fā)給我們。我們收到表ibd文件塊數(shù)據(jù)后立即開展數(shù)據(jù)恢復(fù)工作。
先恢復(fù)元數(shù)據(jù)系統(tǒng)表SYS_TABLES等的數(shù)據(jù),因為數(shù)據(jù)庫sae被刪除后又創(chuàng)建了相同結(jié)構(gòu)的表,這導(dǎo)致系統(tǒng)表SYS_TABLES等不再包含刪除前數(shù)據(jù)庫sae表信息。我們使用自研的恢復(fù)工具從ibd塊數(shù)據(jù)存儲結(jié)構(gòu)分析關(guān)聯(lián)匹配各表的對應(yīng)關(guān)系,得到表對象ID與存儲空間ID的映射關(guān)系。
使用MySQL表數(shù)據(jù)恢復(fù)工具從ibd塊數(shù)據(jù)中恢復(fù)對應(yīng)表的數(shù)據(jù),有幾張表LOB字段數(shù)據(jù)占用空間達100GB以上,恢復(fù)這幾張表花費了一些時間。根據(jù)客戶提供的sae表恢復(fù)清單優(yōu)先級順序完成所有表的恢復(fù)工作。
3. 導(dǎo)入恢復(fù)出來的表數(shù)據(jù)
將MySQL表數(shù)據(jù)恢復(fù)工具恢復(fù)出來的表數(shù)據(jù)導(dǎo)入我司測試服務(wù)器上新建的數(shù)據(jù)庫sae中。
完成第一臺節(jié)點硬盤上所有數(shù)據(jù)恢復(fù)工作。抽取出了部分表數(shù)據(jù),并發(fā)送給客戶驗證數(shù)據(jù)。
4. 從第二臺節(jié)點的硬盤恢復(fù)數(shù)據(jù)
客戶找出第二臺機器上的硬盤,再次進行磁盤底層數(shù)據(jù)恢復(fù)工作。將掃描出來的表ibd塊數(shù)據(jù)打包壓縮發(fā)給北京雨翰數(shù)據(jù)恢復(fù)公司,我司使用與第一臺節(jié)點硬盤類似的恢復(fù)方法恢復(fù)被刪除的表數(shù)據(jù)。
5. 合并兩個節(jié)點恢復(fù)出來的數(shù)據(jù)
完成恢復(fù)Mariadb集群第二個節(jié)點的硬盤上的所有被刪除數(shù)據(jù),將恢復(fù)出來的第二個節(jié)點的表數(shù)據(jù)導(dǎo)入第一個節(jié)點恢復(fù)出來的數(shù)據(jù)庫sae中。
6. 客戶再次驗證數(shù)據(jù)
客戶遠程驗證完畢數(shù)據(jù),并發(fā)送全部數(shù)據(jù)給客戶。
至此我司完成被刪除數(shù)據(jù)庫sae的恢復(fù)工作。
-----------------------------------------------------------------------------------------------------------
提供7*24專業(yè)SQL Server數(shù)據(jù)庫修復(fù),MySQL數(shù)據(jù)庫修復(fù),Sybase數(shù)據(jù)庫遠程及現(xiàn)場技術(shù)支持,Sybase ASE及Sybase SQL Anywhere數(shù)據(jù)庫修復(fù)服務(wù),Oracle數(shù)據(jù)庫修復(fù),PostgreSQL數(shù)據(jù)庫恢復(fù)。
我們可以幫您解決遇到的數(shù)據(jù)庫誤操作、數(shù)據(jù)庫報錯、數(shù)據(jù)庫損壞、被勒索病毒加密等故障問題。
電話:13811580958 (微信),QQ:289965371
We supply technical support for Sybase ASE and Sybase SQL Anywhere, also have many years of experience in recovering data from damanged Sybase devices. Contact us by
Phone: +86 13811580958
Wechat: 13811580958
Email: 289965371@qq.com
掃描以下北京雨翰數(shù)據(jù)恢復(fù)官方微信獲取專業(yè)數(shù)據(jù)庫恢復(fù)服務(wù):
