****欧欧美毛片4,国产午夜精品视频,97视频在线观看免费视频,久久七国产精品

數據恢復咨詢熱線:400-666-3702??

歡迎訪問南京兆柏數據恢復公司,專業數據恢復15年

兆柏數據恢復公司

?常見問題

?當前位置: 主頁 > 常見問題

MySQL數據頁損壞問題的場景

瀏覽量: 次 發布日期:2023-09-08 13:47:26

MySQL數據頁損壞問題的場景

  數據庫的數據文件損壞,算是比較頭疼的一個問題了,技術社群的這篇文章《故障解析 | 生產環境遇到 MySQL 數據頁損壞問題如何解決?》給我們介紹了MySQL數據庫中數據page損壞的場景,值得借鑒學習。

  四月份的時候,遇到一次實例異常 crash 的問題。當時數據庫自動重啟,未對生產造成影響,未做處理,但是還是記錄了下錯誤信息,錯誤日志中有如下信息,

  因為當時自動恢復了,并未重視這個問題,然后六月份的時候實例又 crash 了。查看報錯信息,報錯信息如下,

  兩次的報錯信息很相似,出現一次是偶然,兩次就值得重視了。雖然之前很幸運未對生產造成影響,但是如果后面哪一天異常了導致實例無法啟動,那不就是妥妥的一個生產故障嘛,作為 DBA 要有憂患意識,必須要提前準備好應對之策,針對此類問題,該如何排查以及解決?通過查閱資料和向前輩請教,也算有所收獲,想著如果有其他同學遇到類似問題也可作為參考,于是有了此文。

  一般來說,數據頁損壞,錯誤日志中都會顯示具體的 page number,其他情況暫不考慮。在此前提下,根據實例狀態可以將數據頁損壞分為以下兩種場景:實例能正常啟動實例無法正常啟動

  場景不同,處理方法也略有不同,下面分別展開詳細分析。

  此時借助通過錯誤日志中的信息,可以通過查詢元數據表獲取數據頁所屬信息。考慮生產環境信息安全,在測試環境建立測試表進行展示。

  測試環境表結構如下,

  根據錯誤信息中提示的 page number 信息來查看數據頁信息,查詢方式如下,

  注意:查詢 INNODB_BUFFER_PAGE 系統表[1] 會對性能有影響,因此不建議隨意在生產環境執行。

  另外,如果錯誤日志中有提示 和 相關信息,則也可以通過如下方式(涉及 INNODB_SYS_INDEXES[2] 和 INNODB_SYS_TABLES[3] 系統表 )進行查詢,

  根據上面的查詢結果,確定損壞的頁是屬于主鍵還是輔助索引,如果屬于主鍵索引,因為在 MySQL 中索引即數據,則可能會導致數據丟失,如果是輔助索引,刪除索引重建即可。

  此時可以通過兩種方式嘗試拉起實例。

  使用 innodb_force_recovery[4] 參數進行強制拉起 MySQL 實例。

  正常情況下 值應該設置為 0。當緊急情況下實例無法正常啟動時可以嘗試將其設置為 >0 的值,強制拉起實例然后將數據邏輯備份導出進行恢復。 值最高支持設置到 6,但是值為 4 或更大可能會永久損壞數據文件。因此當強制 InnoDB 恢復時,應始終以 開頭,并僅在必要時遞增該值。

  使用 inno_space[5] 工具進行數據文件進行修復。

  inno_space 是一個可以直接訪問 InnoDB 內部文件的命令行工具,可以通過該工具查看 MySQL 數據文件的具體結構,修復 。更多參考[6]

  如果 InnoDB 表文件中的 page 損壞,導致實例無法啟動,可以嘗試通過該工具進行修復,如果損壞的只是 ,inno_space 可以將 跳過,從而保證實例能夠啟動,并且將絕大部分的數據找回。示例,

  經過前面分析,了解數據頁損壞場景的處理方式。哪怕極端場景下,也可以做到從容不慌,盡可能少丟數據甚至能夠不丟數據。但是如果是生產環境,尤其是金融行業,是無法容忍丟失一條數據的,比較有可能這一條數據就涉及幾個小目標,因此,重要的事情說三遍,一定要備份!一定要備份!一定要備份![1]

  innodb_buffer_page: https://dev.mysql.com/doc/refman/5.7/en/information-schema-innodb-buffer-page-table.html[2]

阜陽數據恢復

  innodb_sys_indexes: https://dev.mysql.com/doc/refman/5.7/en/information-schema-innodb-sys-indexes-table.html[3]

  innodb_sys_table: https://dev.mysql.com/doc/refman/5.7/en/information-schema-innodb-sys-tables-table.html[4]

  innodb_force_recovery: https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html[5]

  inno_space: https://github.com/baotiao/inno_space[6]

  inno_space 工具介紹: http://mysql.taobao.org/monthly/2021/11/02/

  如果您認為這篇文章有些幫助,還請不吝點下文章末尾的"點贊"和"在看",或者直接轉發pyq,

  近期更新的文章:《MySQL導入導出數據表容量的一個問題場景》《查詢字段的數量對查詢效率的影響》

  《定位磁盤性能問題的武器》《MySQL客戶端連接提示1045錯誤的幾種可能場景》《ChatGPT斗智斗勇過程》近期的熱文:《推薦一篇Oracle RAC Cache Fusion的經典論文》《"紅警"游戲開源代碼帶給我們的震撼》文章分類和索引:《公眾號1200篇文章分類和索引》

宿州數據恢復
相關推薦