• 人大金倉KES高可用共享集群部署遇到文件系統損壞,該如何解決?


    時間:2022-04-25





    數據庫工程師在部署KingbaseES高可用共享集群過程時,有時候會遇到文件損壞,系統無法啟動的問題。作為金倉數據庫工程師的我在最近一次客戶現場支持過程中,也遇到了同樣的問題,經過多輪排查,結合豐富的產品手冊,我最終找到了快速解決問題的路徑。在這里我將經驗分享出來,以便更多金倉數據庫使用者查看。該客戶此前購買的國際巨頭Oracle的數據庫產品,現需要替換為金倉數據庫產品。根據現場需要,我前往項目所在地幫助客戶部署金倉KingbaseES高可用共享集群。

    第一步:配置時鐘同步

    時鐘同步可以采用ntpd同步,也可通過timesyncd;

    采用timesyncd,需要修改

    /etc/systemd/timesyncd.conf,配置時鐘同步客戶端,通過timedatectl管理;

    查看命令如下:

    timedatectl show-timesync;

    第二步:配置共享磁盤

    由于KingbaseES高可用共享集群使用多節點共享磁盤,因此需要采用DAS、NAS、SAN等存儲。本次采用FC磁盤陣列作為共享磁盤,FC磁盤整陣列就是光纖磁盤陣列;

    共享磁盤客戶端制作多路徑綁定,可以提高磁盤的可用性,有效防止磁盤故障、網絡故障導致的數據丟失或損壞;

    首先在配置安裝multipathd時,修改/etc/multipath.conf(具體配置參見其他文章,不是本文重點),systemctl restart multipathd啟動;

    在FC磁盤整列服務端劃分磁盤,在磁盤客戶端(也就是數據庫服務端),執行rescan-scsi-bus.sh后,在主機群可以找到新創建的盤;

    這時候進行多路徑聚合multipath –v2;

    查看多路徑綁定multipath –ll。

    第三步:配置udev規則,固定磁盤名

    01)udevadm info --query=all --name=/dev/dm-0

    02)vim /etc/udev/rule.d/60-scsi.rules

    03)ENV{ID_SERAIL}=="...",ENV{DM_WWN}=="..."RUN+="/bin/sh -c'mknod /dev/chmpatha b $major $minor; chmod 0644 /dev/chmpatha; rm -f /dev/block/$major:$minor; ln -s /dev/chmpatha /dev/block/$major:$ninor'"

    第四步:業務系統測試

    安裝完成后,需要進行簡單功能測試和可用性測試,以便將問題盡早解決掉。首先我和技服進行了down機、斷掉業務網和管理網、制造進程僵死等故障測試。

    問題來了。在進行斷網的測試中,發現數據庫一直在不停地切換節點。查看日志,發現是文件系統損壞導致的數據庫無法啟動。

    采用fsck的方法進行修復,fsck -a /dev/mapper/mpatha

    但是未能修復!客戶表明2天內必須解決。

    再次梳理日志,KingbaseES集群組件在報文件系統異常前,沒有任何異常日志。在KingbaseES文件系統異常前,僅有kenel相關日志。根據一般經驗,懷疑可能是雙掛導致的磁盤損壞。

    第五步:問題排查

    繼續分析集群各節點的掛載記錄,發現一些mpatha磁盤在系統重啟后,在另一節點莫名其妙的掛載上了,目前推斷可能是雙掛導致的文件系統損壞,但是無法繼續敲定重啟為何導致雙掛?

    沒有辦法,只有將磁盤重新格式化,繼續進行復現測試,終于抓住了問題,在異常重啟后的機器上出現一條掛載記錄:

    /dev/mappper/mpatha 1007G 146M 956G 1%/media/root/9g0oc559-2d0a-4e88-a1e7-1b1badc9a7

    實際上磁盤在另外節點正在被數據庫管理進程使用,顯然是雙掛,那么這條掛載記錄怎么來的?

    重新思考操作的每一步驟,最終發現了問題的根本原因:

    第六步:問題根因

    沒錯,是操作系統的自動掛載導致的雙掛問題。

    于是我們將"自動掛載"選項去掉,同時為了保險起見,將數據庫服務端所在節點的圖形界面關掉,在圖形模式下使用如下命令可以切換到純命令行模式:

    systemctl isolate multi-user.target

    如果需要每次重啟都進入純命令行模式,可以使用如下命令:

    systemctl set-default multi-user.target

    徹夜鏖戰,終于解決了文件系統損壞的問題,讓系統恢復了正常,獲得客戶高度認可,我內心還是很高興的。

    小結

    如果服務器均部署在國產圖形化Linux操作系統,在圖形化界面,會默認設置自動掛載。在自動掛載時數據庫實例盤雙掛,會導致文件系統損壞。之后,將服務器“自動掛載”取消,同時使用命令“systemctl set-default multi-user.target”設置默認為命令界面,防止誤操作。這樣就能快速恢復系統正常運行。

    轉自:中國網

      【版權及免責聲明】凡本網所屬版權作品,轉載時須獲得授權并注明來源“中國產業經濟信息網”,違者本網將保留追究其相關法律責任的權力。凡轉載文章及企業宣傳資訊,僅代表作者個人觀點,不代表本網觀點和立場。版權事宜請聯系:010-65363056。

    延伸閱讀

    ?

    版權所有:中國產業經濟信息網京ICP備11041399號-2京公網安備11010502035964

    www.色五月.com