一直以來QNap 純粹用來當作儲存設備, 花俏功能我都直接關掉, 只開放iSCSI , NFS 與CIFS , 而且限定內部ip才能連線(Qlocker遠離我).
但是最近公司停電,開機後, 我發現有一個插槽壞了, 換硬碟也顯示無硬碟狀態, 有夠麻煩的, 手忙腳亂了一番, 不小心造成QNap不正常關機(不要笑我啊).
悲劇來了, windows 的主要網域主控站, 與Sharepoint Server直接GG 慘, 而Linux也有狀況例如這個網站也GG, 好險Linux自帶工具, 告訴我可以執行xfs修復, 至少可以開機成功, windows就不多說了, 直接拿備份重建, 但是一波好幾折, 辛酸阿.
先說 linux 的docker server中 mariadb server container也再起不能了, 哭,
於是我另開一個可啟動的 mariadb container , 把有問題的volume中的額外table放到乾淨的mysql目錄中, 想像這樣或許可以救起來其他資料庫, 一開始啟動成功, show database, show tables也看到, 真是高興, 但是要select tables時候, 出現錯誤訊息
mysql error unknown table engine
又哭… 找了好久終於找到可以在my.cnf中加上以下參數, 但是我的container沒有mapping到/etc中的my.cnf , 於是又搞了一次, 才可以進行修復.
innodb_force_recovery = 1
or
innodb_force_recovery = 4
終於完成了, 我的網站修復完成.
— added 2021/5/10 —-
後來發現以上innodb_force_recovery參數只能暫時使用, 需要趕緊使用mysqldump把資料備份下來,
mysqldump --user=root -h 127.0.0.1 --password --lock-tables --databases 資料庫名稱 > xxx.sql
或
mysqldump --user=root -h 127.0.0.1 --password --databases 資料庫名稱 > xxx.sql
然後再重新跑一個全新 server 把相關資料倒回去, 才能真正高枕無憂