背景
接到在虛擬機安裝MogDB數據庫失敗的需求,使用的安裝方式是標準安裝(om)方式,標準安裝方式安裝MogDB數據庫分兩步,第一步是預安裝處理(preinstall),第二步是安裝數據庫實例(gs_install),反饋是preinstall成功了,但是gs_install一直失敗,且更換服務器和更換數據庫安裝包都不行,使用的操作系統是centos 7.9。
分析
得到幾個關鍵信息,服務centos 7.9、虛擬機、preinstall成功、gs_install失敗,按著歷史經驗值,第一步想到的就是服務器缺少cpu指令集,特別是虛擬機服務器上經常會遇到,這個在官方文上數據庫安裝的環境要求中也有提到。
查看指令集

lscpu 命令發現rdtscp 和 bmi2 指令集存在,那會不會是其他原因呢? 需要根據報錯進行代碼debug,再次執行一下gs_install命令,發現報錯發生在gs_initdb初始化數據庫的步驟:

查看安裝日志
在數據庫安裝的過程中會有比較詳細的響應日志產生,我們看日志信息,發現進程直接退出了

查看堆棧信息
了解到是initdb過程中進程直接退出了,需要通過查看代碼邏輯找到進程退出的原因
--如果沒有gdb,需要提前安裝好
gdb gs_initdb
--進入后輸入初始化參數
(gdb) r --pgdata=/opt/mogdb/data --nodename=primary --pwpasswd=Enmo@123 --encoding=UTF-8 --locale=en_US.UTF-8

這里可以看到在執行mogdb --boot的時候收到了一個信號,然后就退出了,繼續查mogdb
gdb mogdb
(gdb) r --boot -x1 -F

這里發現了cylance,數據庫是沒有這個的,經查詢cylance是一個殺毒軟件,也就是說是cylance把mogdb的啟動進程給殺了,
我們再次進行驗證:
- cylance關閉,數據庫安裝成功,且可以正常啟動
- 關閉數據庫,開啟cylance,再次啟動數據庫發現啟動失敗
結果
由此數據庫安裝部署失敗問題已經確認,這個問題是第一次遇到,因為很少會在linux服務器上安裝殺毒軟件,以后如果遇到類似問題,可以參考此文章排查,然后決定是否要關閉殺毒軟件或者更換其他服務器進行安裝部署。
「喜歡這篇文章,您的關注和贊賞是給作者最好的鼓勵」
關注作者
【版權聲明】本文為墨天輪用戶原創內容,轉載時必須標注文章的來源(墨天輪),文章鏈接,文章作者等基本信息,否則作者和墨天輪有權追究責任。如果您發現墨天輪中有涉嫌抄襲或者侵權的內容,歡迎發送郵件至:contact@modb.pro進行舉報,并提供相關證據,一經查實,墨天輪將立刻刪除相關內容。




