MariaDB 10.6.8 數(shù)據(jù)庫被覆蓋 從Linux磁盤分區(qū)掃描MariaDB表數(shù)據(jù)文件的碎片頁面恢復數(shù)據(jù)庫
發(fā)布時間:2024-09-24
Mariadb 10.6.8 三臺節(jié)點的多主集群,數(shù)據(jù)庫sae被刪除后,又新建了相同的表對象并導入部分表數(shù)據(jù) MySQL誤操作數(shù)據(jù)修復 MySQL數(shù)據(jù)庫修復 MySQL頁面碎片收集
客戶名稱: 某半導體相關(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被刪除后,又新建了相同的表對象并導入部分表數(shù)據(jù)。
二、 恢復可行性分析
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ù)掃描工具從磁盤底層恢復被刪除數(shù)據(jù)庫表的ibd文件塊數(shù)據(jù),然后再使用MySQL表數(shù)據(jù)恢復工具從ibd文件塊數(shù)據(jù)恢復被刪除的表數(shù)據(jù)。
Mariadb多主集群的三臺節(jié)點的硬盤都可以被用來恢復數(shù)據(jù),最后合并恢復出來的數(shù)據(jù)。
三、 技術(shù)風險
以下情況可能導致無法完全恢復被刪除數(shù)據(jù)庫sae的表數(shù)據(jù):
> 數(shù)據(jù)庫sae被刪除后又新建了相同表并導入部分數(shù)據(jù)
> Mariadb所在Linux服務器的后臺數(shù)據(jù)程序一直在運行
我們會盡最大努力從三臺節(jié)點的硬盤上恢復最大化的數(shù)據(jù)。
四、 數(shù)據(jù)庫恢復過程
先恢復Mariadb集群第一個節(jié)點的硬盤sdh上的數(shù)據(jù)。第二個節(jié)點的恢復方法類似。
1. 從磁盤底層掃描表ibd文件塊數(shù)據(jù)
通過修改MySQL誤刪除數(shù)據(jù)掃描工具的底層掃描邏輯,使得適用于XFS文件系統(tǒng)上Mariadb表數(shù)據(jù)塊,將編譯好的mysqlrecoveryv7上傳至第一臺Linux服務器。開始掃描硬盤數(shù)據(jù),至8點已完成掃描第一個節(jié)點硬盤3.8TB數(shù)據(jù),得到260GB的Mariadb表ibd文件塊數(shù)據(jù)。
2. 從ibd塊數(shù)據(jù)恢復表數(shù)據(jù)
客戶將掃描出來的260GB Mariadb表ibd文件塊數(shù)據(jù)打包壓縮后發(fā)給我們。我們收到表ibd文件塊數(shù)據(jù)后立即開展數(shù)據(jù)恢復工作。
先恢復元數(shù)據(jù)系統(tǒng)表SYS_TABLES等的數(shù)據(jù),因為數(shù)據(jù)庫sae被刪除后又創(chuàng)建了相同結(jié)構(gòu)的表,這導致系統(tǒng)表SYS_TABLES等不再包含刪除前數(shù)據(jù)庫sae表信息。我們使用自研的恢復工具從ibd塊數(shù)據(jù)存儲結(jié)構(gòu)分析關(guān)聯(lián)匹配各表的對應關(guān)系,得到表對象ID與存儲空間ID的映射關(guān)系。
使用MySQL表數(shù)據(jù)恢復工具從ibd塊數(shù)據(jù)中恢復對應表的數(shù)據(jù),有幾張表LOB字段數(shù)據(jù)占用空間達100GB以上,恢復這幾張表花費了一些時間。根據(jù)客戶提供的sae表恢復清單優(yōu)先級順序完成所有表的恢復工作。
3. 導入恢復出來的表數(shù)據(jù)
將MySQL表數(shù)據(jù)恢復工具恢復出來的表數(shù)據(jù)導入我司測試服務器上新建的數(shù)據(jù)庫sae中。
完成第一臺節(jié)點硬盤上所有數(shù)據(jù)恢復工作。抽取出了部分表數(shù)據(jù),并發(fā)送給客戶驗證數(shù)據(jù)。
4. 從第二臺節(jié)點的硬盤恢復數(shù)據(jù)
客戶找出第二臺機器上的硬盤,再次進行磁盤底層數(shù)據(jù)恢復工作。將掃描出來的表ibd塊數(shù)據(jù)打包壓縮發(fā)給北京雨翰數(shù)據(jù)恢復公司,我司使用與第一臺節(jié)點硬盤類似的恢復方法恢復被刪除的表數(shù)據(jù)。
5. 合并兩個節(jié)點恢復出來的數(shù)據(jù)
完成恢復Mariadb集群第二個節(jié)點的硬盤上的所有被刪除數(shù)據(jù),將恢復出來的第二個節(jié)點的表數(shù)據(jù)導入第一個節(jié)點恢復出來的數(shù)據(jù)庫sae中。
6. 客戶再次驗證數(shù)據(jù)
客戶遠程驗證完畢數(shù)據(jù),并發(fā)送全部數(shù)據(jù)給客戶。
至此我司完成被刪除數(shù)據(jù)庫sae的恢復工作。
-----------------------------------------------------------------------------------------------------------
提供7*24專業(yè)SQL Server數(shù)據(jù)庫修復,MySQL數(shù)據(jù)庫修復,Sybase數(shù)據(jù)庫遠程及現(xiàn)場技術(shù)支持,Sybase ASE及Sybase SQL Anywhere數(shù)據(jù)庫修復服務,Oracle數(shù)據(jù)庫修復,PostgreSQL數(shù)據(jù)庫恢復。
我們可以幫您解決遇到的數(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ù)恢復官方微信獲取專業(yè)數(shù)據(jù)庫恢復服務:
