數(shù)據(jù)庫(kù)工程師在部署KingbaseES高可用共享集群過程時(shí),有時(shí)候會(huì)遇到文件損壞,系統(tǒng)無(wú)法啟動(dòng)的問題。
作為金倉(cāng)數(shù)據(jù)庫(kù)工程師的我在最近一次客戶現(xiàn)場(chǎng)支持過程中,也遇到了同樣的問題,經(jīng)過多輪排查,結(jié)合豐富的產(chǎn)品手冊(cè),我最終找到了快速解決問題的路徑。在這里我將經(jīng)驗(yàn)分享出來(lái),以便更多金倉(cāng)數(shù)據(jù)庫(kù)使用者查看。
該客戶此前購(gòu)買的國(guó)際巨頭Oracle的數(shù)據(jù)庫(kù)產(chǎn)品,現(xiàn)需要替換為金倉(cāng)數(shù)據(jù)庫(kù)產(chǎn)品。根據(jù)現(xiàn)場(chǎng)需要,我前往項(xiàng)目所在地幫助客戶部署金倉(cāng)KingbaseES高可用共享集群。
第一步:配置時(shí)鐘同步
時(shí)鐘同步可以采用ntpd同步,也可通過
timesyncd;
采用timesyncd,需要修改
/etc/systemd/timesyncd.conf, 配置時(shí)鐘同步客戶端,通過timedatectl管理;
查看命令如下:
timedatectl show-timesync;
第二步:配置共享磁盤
由于KingbaseES高可用共享集群使用多節(jié)點(diǎn)共享磁盤,因此需要采用DAS、NAS、SAN等存儲(chǔ)。本次采用FC磁盤陣列作為共享磁盤,F(xiàn)C磁盤整陣列就是光纖磁盤陣列;
共享磁盤客戶端制作多路徑綁定,可以提高磁盤的可用性,有效防止磁盤故障、網(wǎng)絡(luò)故障導(dǎo)致的數(shù)據(jù)丟失或損壞;
首先在配置安裝multipathd時(shí),修改/etc/multipath.conf(具體配置參見其他文章,不是本文重點(diǎn)),systemctl restart multipathd啟動(dòng);
在FC磁盤整列服務(wù)端劃分磁盤,在磁盤客戶端(也就是數(shù)據(jù)庫(kù)服務(wù)端),執(zhí)行rescan-scsi-bus.sh后,在主機(jī)群可以找到新創(chuàng)建的盤;
這時(shí)候進(jìn)行多路徑聚合multipath –v2;
查看多路徑綁定multipath –ll。
第三步:配置udev規(guī)則,固定磁盤名
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'"
第四步:業(yè)務(wù)系統(tǒng)測(cè)試
安裝完成后,需要進(jìn)行簡(jiǎn)單功能測(cè)試和可用性測(cè)試,以便將問題盡早解決掉。首先我和技服進(jìn)行了down機(jī)、斷掉業(yè)務(wù)網(wǎng)和管理網(wǎng)、制造進(jìn)程僵死等故障測(cè)試。
問題來(lái)了。在進(jìn)行斷網(wǎng)的測(cè)試中,發(fā)現(xiàn)數(shù)據(jù)庫(kù)一直在不停地切換節(jié)點(diǎn)。查看日志,發(fā)現(xiàn)是文件系統(tǒng)損壞導(dǎo)致的數(shù)據(jù)庫(kù)無(wú)法啟動(dòng)。
采用fsck的方法進(jìn)行修復(fù),
fsck -a /dev/mapper/mpatha
但是未能修復(fù)!客戶表明2天內(nèi)必須解決。
再次梳理日志,KingbaseES集群組件在報(bào)文件系統(tǒng)異常前,沒有任何異常日志。在KingbaseES文件系統(tǒng)異常前,僅有kenel相關(guān)日志。根據(jù)一般經(jīng)驗(yàn),懷疑可能是雙掛導(dǎo)致的磁盤損壞。
第五步:?jiǎn)栴}排查
繼續(xù)分析集群各節(jié)點(diǎn)的掛載記錄,發(fā)現(xiàn)一些mpatha磁盤在系統(tǒng)重啟后,在另一節(jié)點(diǎn)莫名其妙的掛載上了,目前推斷可能是雙掛導(dǎo)致的文件系統(tǒng)損壞,但是無(wú)法繼續(xù)敲定重啟為何導(dǎo)致雙掛?
沒有辦法,只有將磁盤重新格式化,繼續(xù)進(jìn)行復(fù)現(xiàn)測(cè)試,終于抓住了問題,在異常重啟后的機(jī)器上出現(xiàn)一條掛載記錄:
/dev/mappper/mpatha 1007G 146M 956G 1%/media/root/9g0oc559-2d0a-4e88-a1e7-1b1badc9a7
實(shí)際上磁盤在另外節(jié)點(diǎn)正在被數(shù)據(jù)庫(kù)管理進(jìn)程使用,顯然是雙掛,那么這條掛載記錄怎么來(lái)的?
重新思考操作的每一步驟,最終發(fā)現(xiàn)了問題的根本原因:
第六步:?jiǎn)栴}根因
沒錯(cuò),是操作系統(tǒng)的自動(dòng)掛載導(dǎo)致的雙掛問題。
于是我們將"自動(dòng)掛載"選項(xiàng)去掉,同時(shí)為了保險(xiǎn)起見,將數(shù)據(jù)庫(kù)服務(wù)端所在節(jié)點(diǎn)的圖形界面關(guān)掉,在圖形模式下使用如下命令可以切換到純命令行模式:
systemctl isolate multi-user.target
如果需要每次重啟都進(jìn)入純命令行模式,可以使用如下命令:
systemctl set-default multi-user.target
徹夜鏖戰(zhàn),終于解決了文件系統(tǒng)損壞的問題,讓系統(tǒng)恢復(fù)了正常,獲得客戶高度認(rèn)可,我內(nèi)心還是很高興的。
小結(jié)
如果服務(wù)器均部署在國(guó)產(chǎn)圖形化Linux操作系統(tǒng),在圖形化界面,會(huì)默認(rèn)設(shè)置自動(dòng)掛載。在自動(dòng)掛載時(shí)數(shù)據(jù)庫(kù)實(shí)例盤雙掛,會(huì)導(dǎo)致文件系統(tǒng)損壞。之后,將服務(wù)器“自動(dòng)掛載”取消,同時(shí)使用命令“systemctl set-default multi-user.target ”設(shè)置默認(rèn)為命令界面,防止誤操作。這樣就能快速恢復(fù)系統(tǒng)正常運(yùn)行。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )