實戰(zhàn)解析)
簡介華為云GaussDB 100 1.0.1數(shù)據(jù)庫安裝部署資源包聚焦EulerOS 20 SP8 64位環(huán)境面向需要搭建分布式數(shù)據(jù)庫的DBA、運維人員和開發(fā)者。GaussDB是華為自研的企業(yè)級分布式數(shù)據(jù)庫具備分布式擴(kuò)展、高可用與強(qiáng)一致事務(wù)等能力該版本適合在云環(huán)境下快速完成基礎(chǔ)部署與功能驗證。資源共6個文件以4個Python自動化腳本為主另含GaussDB RUN安裝包與SHA256校驗文件整體大小7.39MB腳本覆蓋自動化安裝、平滑升級、公共函數(shù)封裝和SSH免密配置配合校驗文件可確保包體完整省去手動下載與依賴配置的繁瑣步驟。利用這套工具用戶可從環(huán)境準(zhǔn)備、部署安裝到后續(xù)升級形成完整閉環(huán)顯著降低GaussDB 100的上手與運維成本適合在測試環(huán)境先行驗證再切換生產(chǎn)。已有1310人學(xué)習(xí)下載對于希望低成本搭建實驗環(huán)境、學(xué)習(xí)華為分布式數(shù)據(jù)庫落地流程的開發(fā)者來說是一份輕量實用的離線部署參考尤其適合內(nèi)網(wǎng)或網(wǎng)絡(luò)受限場景。1. GaussDB 100 安裝包實戰(zhàn)在歐拉 20 SP8 上拆包、建庫、搭主備如果你手里正好有一臺歐拉 20 SP8 的 64 位服務(wù)器又需要一個能扛住在線交易類業(yè)務(wù)的數(shù)據(jù)庫這個 GaussDB 100 1.0.1 安裝包就是為這類場景準(zhǔn)備的。它解決的是在自主可控環(huán)境下數(shù)據(jù)落盤、容災(zāi)和并發(fā)控制的問題單機(jī)部署輕、主備同步有現(xiàn)成通道、語法和運維習(xí)慣貼近 Oracle 那套老 DBA 遷移成本低。適合正在評估國產(chǎn)數(shù)據(jù)庫的團(tuán)隊、需要內(nèi)網(wǎng)離線部署的項目以及想完整跑一遍“安裝—建庫—備份—主備切換”流程的開發(fā)者。下面按實際部署順序展開先裝通單機(jī)再搭主備最后把日常巡檢和踩過的坑一起講掉。2. GaussDB 100 單機(jī)部署解包、環(huán)境檢查與 zsql 建庫2.1 解包前的三個確認(rèn)架構(gòu)、目錄規(guī)劃、運行用戶動手之前先看包名GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz。命名拆開是版本 1.0.1、目標(biāo)系統(tǒng)歐拉 20 SP8、64 位架構(gòu)。第一件事就是確認(rèn)你的系統(tǒng)跟這個包匹配uname -m出 x86_64 只是第一步還要看發(fā)行版版本。目錄規(guī)劃我會按一套約定來寫后端維護(hù)會省心很多mkdir -p /data/gaussdb groupadd dba useradd -g dba -d /home/gaussdb -s /bin/bash gaussdb tar -zxvf GaussDB_100_1.0.1-DATABASE-EULER20SP8-64bit.tar.gz -C /data/gaussdb chown -R gaussdb:dba /data/gaussdb邏輯說明軟件目錄和數(shù)據(jù)目錄分開是最常見的做法/data/gaussdb只是安裝根目錄實際數(shù)據(jù)文件在它的子目錄下。專用運行用戶是為了隔離權(quán)限數(shù)據(jù)庫進(jìn)程絕不能拿 root 跑這是所有現(xiàn)場部署的底線。參數(shù)說明-C指定解壓目標(biāo)groupadd dba這一步不是必須叫 dba但 GaussDB 100 的很多初始化腳本默認(rèn)找 dba 用戶組保持一致最省事。如果你服務(wù)器上已經(jīng)有 dba 組跳過 groupadd 直接建用戶即可。解壓后再看一層包內(nèi)通常有 install 相關(guān)腳本和配套文檔目錄。我的習(xí)慣是先把包內(nèi)自帶的安裝說明打開掃一遍因為這個版本的腳本入口在不同小版本里有差異可能是 Python 也可能是 Perl以包內(nèi)實際腳本為準(zhǔn)。這不算偷懶是避免把 1.0.1 的腳本路徑記錯然后做無用功。2.2 環(huán)境準(zhǔn)備與初始化別急著敲安裝命令環(huán)境檢查比安裝本身更容易翻車。常見問題集中在三塊SELinux、防火墻、內(nèi)核參數(shù)。setenforce 0 sed -i s/^SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config sysctl -w vm.swappiness10 sysctl -w vm.overcommit_memory0 sysctl -w fs.file-max6815744 firewall-cmd --permanent --add-port1888/tcp firewall-cmd --reload邏輯說明SELinux 不關(guān)的話數(shù)據(jù)庫進(jìn)程訪問數(shù)據(jù)文件經(jīng)常被攔日志里報權(quán)限 denied排查起來非常耗時不如部署期直接關(guān)掉。vm.swappiness調(diào)到 10 是避免系統(tǒng)過早把數(shù)據(jù)庫內(nèi)存頁換到磁盤fs.file-max則跟連接數(shù)上限相關(guān)。參數(shù)說明1888 是 GaussDB 100 默認(rèn)監(jiān)聽端口如果你打算用其他端口比如 3888那后續(xù)所有連接串和配置都得跟著改建議一開始就定死。防火墻沒有圖形界面時用ss -lntp驗證端口是否真正監(jiān)聽比對著配置猜靠譜得多。環(huán)境就緒后執(zhí)行初始化。常見做法是切換到 gaussdb 用戶用包內(nèi)安裝腳本指定單機(jī)模式su - gaussdb cd /data/gaussdb python install.py --modesingle \ --data_dir/data/gaussdb/data \ --log_dir/data/gaussdb/log \ --charsetUTF8 \ --listen_ip0.0.0.0邏輯說明--modesingle明確當(dāng)前是單機(jī)部署后續(xù)要轉(zhuǎn)主備再改配置。--data_dir是數(shù)據(jù)文件根目錄--log_dir是運行日志目錄兩個目錄必須分開否則日志寫滿會把數(shù)據(jù)盤搞爆。參數(shù)說明--charsetUTF8在中文環(huán)境下建議直接寫死否則默認(rèn)字符集可能在導(dǎo)入含中文的數(shù)據(jù)時出現(xiàn)亂碼。--listen_ip0.0.0.0表示監(jiān)聽所有網(wǎng)卡如果只允許本機(jī)訪問改成 127.0.0.1后面搭主備時備機(jī)要通過網(wǎng)絡(luò)連主機(jī)這里必須監(jiān)聽業(yè)務(wù)網(wǎng)卡地址。初始化過程中會要求設(shè)置 SYS 用戶密碼。這條密碼別隨便給它相當(dāng)于數(shù)據(jù)庫的 root。密碼復(fù)雜度策略在 GaussDB 100 里默認(rèn)要求大小寫加數(shù)字長度不低于 8 位現(xiàn)場如果裝到一半被密碼策略卡住按提示加上特殊字符即可。2.3 啟動、連接、建庫驗證安裝結(jié)果的三個動作安裝腳本跑完不代表能用要看到 zsql 能敲出 SQL 才算數(shù)。cd /data/gaussdb/bin zctl.py -t start zsql sys/密碼127.0.0.1:1888邏輯說明zctl.py -t start是啟動數(shù)據(jù)庫實例的控制命令-t指定操作類型。zsql 是 GaussDB 100 自帶的命令行客戶端語法風(fēng)格跟 Oracle 的 sqlplus 很像連上以后看到 SQL 提示符即安裝成功。參數(shù)說明連接串格式是用戶名/密碼IP:端口。第一次登錄 SYS 用戶建議順手驗證一下當(dāng)前版本信息用SELECT VERSION FROM V$INSTANCE;這種動態(tài)視圖查詢確認(rèn)跑起來的是 1.0.1防止現(xiàn)場有多套環(huán)境連錯實例。接下來按業(yè)務(wù)規(guī)劃建表空間和用戶。GaussDB 100 默認(rèn)提供 SYSTEM、USER、TEMP、UNDO 等表空間但業(yè)務(wù)數(shù)據(jù)不要直接塞 USER單獨建一個業(yè)務(wù)表空間更清晰。CREATE TABLESPACE TBS_APP DATAFILE /data/gaussdb/data/app01.dbf SIZE 8G AUTOEXTEND ON NEXT 256M MAXSIZE 32G; CREATE USER app_user IDENTIFIED BY App12345 DEFAULT TABLESPACE TBS_APP; GRANT CONNECT, RESOURCE TO app_user;邏輯說明CREATE TABLESPACE時指定數(shù)據(jù)文件路徑、初始大小、自動擴(kuò)展步長和上限。把數(shù)據(jù)文件放到獨立表空間后續(xù)做表空間級備份、遷移都能單獨操作不會牽一發(fā)動全身。參數(shù)說明AUTOEXTEND ON NEXT 256M表示每次自動擴(kuò) 256M擴(kuò)展太頻繁會有 IO 抖動一次性給足 8G 初始空間更適合業(yè)務(wù)穩(wěn)定的系統(tǒng)。MAXSIZE 32G是上限防止某個表空間無限膨脹把磁盤寫滿。這里的數(shù)據(jù)文件路徑要和--data_dir保持一致不然目錄權(quán)限會出問題。3. 主備容災(zāi)ZSYN 日志同步、參數(shù)設(shè)計與切換決策3.1 為什么選主備而不是共享存儲單機(jī)部署只解決“能用”的問題現(xiàn)場環(huán)境一旦要求高可用第一反應(yīng)往往是共享存儲。但 GaussDB 100 在中小規(guī)模場景下主備架構(gòu)更務(wù)實不需要額外采購存儲設(shè)備備機(jī)就是一臺普通服務(wù)器通過 ZSYN 進(jìn)程把主機(jī)的 redo 日志拉到備機(jī)并應(yīng)用備機(jī)始終維護(hù)一份跟主機(jī)差距很小的數(shù)據(jù)映像。這個方案的取舍點在于RPO 取決于同步策略同步模式下主機(jī)提交事務(wù)前要等備機(jī)確認(rèn)數(shù)據(jù)零丟失異步模式下主機(jī)不用等性能好但可能丟最后一批日志。如果你的業(yè)務(wù)是訂單、支付這類不能丟數(shù)據(jù)的選同步如果是日志、報表類異步更合適。我一般把主備部署拆成兩臺機(jī)器角色寫死在配置文件里避免腦裂時兩邊都以為自己是主機(jī)。備機(jī)同時可以承擔(dān)只讀查詢把一部分報表查詢放到備機(jī)跑能明顯減輕主機(jī)壓力但要注意別跑太重的分析任務(wù)否則日志應(yīng)用會滯后。3.2 主備配置文件與 ZSYN 相關(guān)參數(shù)先看主機(jī)的配置文件/data/gaussdb/cfg/gaussdb.conf里幾個關(guān)鍵項ROLEPRIMARY PORT1888 REPL_PORT1889 LOG_ARCHIVEON ARCHIVE_DEST_1LOCATION/data/archive邏輯說明ROLE決定實例是主還是備兩臺機(jī)器的配置差別主要就在這里。REPL_PORT是主備之間同步日志專用的端口不能跟PORT重復(fù)。LOG_ARCHIVEON打開歸檔模式主備同步依賴歸檔日志不開歸檔備機(jī)是追不上主機(jī)的。參數(shù)說明ARCHIVE_DEST_1指定歸檔目錄建議歸檔目錄和數(shù)據(jù)目錄分盤?,F(xiàn)場見過把歸檔放同盤把數(shù)據(jù)盤塞滿的案例歸檔日志增長速度往往比預(yù)想快尤其是有大批量更新任務(wù)時。備機(jī)的配置基本復(fù)制主機(jī)只需要改兩處ROLESTANDBY PORT1888 REPL_PORT1889邏輯說明備機(jī)端口建議跟主機(jī)保持一致這樣應(yīng)用切換時連接串不用改。真正搭建時先跑一遍全量備份然后把備份恢復(fù)到備機(jī)再啟動備機(jī)進(jìn)入恢復(fù)模式ZSYN 進(jìn)程會自動從主機(jī)拉取歸檔日志并保持同步。搭建步驟我習(xí)慣寫成下面這樣避免遺漏# 在主機(jī)執(zhí)行全量備份 zsql sys/密碼127.0.0.1:1888 EOF BACKUP DATABASE TO /backup/full_20250101.dmp; EOF # 把備份文件傳到備機(jī) scp /backup/full_20250101.dmp gaussdb備機(jī)IP:/backup/ # 在備機(jī)執(zhí)行恢復(fù) zsql sys/密碼127.0.0.1:1888 EOF RESTORE DATABASE FROM /backup/full_20250101.dmp; RECOVER DATABASE; EOF邏輯說明BACKUP DATABASE TO生成物理備份包含數(shù)據(jù)文件和日志信息。RESTORE把備份文件還原到備機(jī)數(shù)據(jù)目錄RECOVER讓備機(jī)進(jìn)入可接收歸檔日志的狀態(tài)。整個過程需要在備機(jī)實例啟動前完成順序反了會報數(shù)據(jù)文件不一致。參數(shù)說明備份文件路徑要選在容量充足的位置全量備份文件大小通常接近實際數(shù)據(jù)量。如果數(shù)據(jù)量上百 G建議直接走存儲層面的拷貝或者分段備份不要用單一大文件傳輸容易中斷且不好續(xù)傳。主備啟動后用動態(tài)視圖確認(rèn)同步狀態(tài)SELECT NAME, OPEN_MODE, ROLE FROM V$DATABASE;邏輯說明OPEN_MODE顯示主備機(jī)各自的狀態(tài)主機(jī)應(yīng)該是 PRIMARY備機(jī)是 STANDBY。如果備機(jī)一直處于 MOUNT 或 RECOVER 狀態(tài)說明日志應(yīng)用沒跟上需要檢查 ZSYN 進(jìn)程是否存活。3.3 主備切換什么時候該人工干預(yù)主備切換有兩條路徑一是主機(jī)故障觸發(fā)自動切換二是計劃內(nèi)維護(hù)手動切換。自動切換依賴集群管理組件的探活機(jī)制但現(xiàn)場很多部署只用雙機(jī)配置沒有額外集群軟件這時人工切換就是唯一手段。人工切換的操作順序是固定的# 備機(jī)執(zhí)行把備機(jī)提升為主 zsql sys/密碼127.0.0.1:1888 EOF ALTER DATABASE ACTIVATE STANDBY; EOF # 原主機(jī)恢復(fù)后降級為新備機(jī) zsql sys/密碼127.0.0.1:1888 EOF ALTER DATABASE CONVERT TO STANDBY; EOF邏輯說明ACTIVATE STANDBY讓備機(jī)接管成為新主機(jī)這一步執(zhí)行前必須確認(rèn)原主機(jī)已經(jīng)無法提供服務(wù)否則兩臺機(jī)器同時寫數(shù)據(jù)必然出現(xiàn)數(shù)據(jù)分叉。CONVERT TO STANDBY是把恢復(fù)后的原主機(jī)變成新備機(jī)重新接回同步鏈路。參數(shù)說明做切換決策前先看備機(jī)日志應(yīng)用延遲。延遲幾分鐘以內(nèi)可以切延遲超過半小時就要評估丟失的數(shù)據(jù)量是否可接受。生產(chǎn)環(huán)境我會設(shè)定一個硬閾值同步模式下延遲超過 30 秒就不允許切換直接走數(shù)據(jù)找回流程。4. 備份恢復(fù)與日常巡檢不能只靠 tar 包4.1 備份策略全量、增量和歸檔的配合很多新手拿到安裝包以為數(shù)據(jù)文件在就行這是最危險的想法。數(shù)據(jù)庫的物理文件處于運行狀態(tài)時不能直接拷貝必須通過備份接口生成一致性的備份集。GaussDB 100 的常規(guī)備份思路是每周全量、每天增量、實時歸檔。-- 全量備份 BACKUP DATABASE TO /backup/full_20250108.dmp; -- 增量備份 BACKUP DATABASE INCREMENTAL TO /backup/incr_20250109.dmp; -- 查詢備份集 LIST BACKUPS;邏輯說明全量備份是恢復(fù)的基礎(chǔ)增量備份只記錄變化的數(shù)據(jù)塊恢復(fù)時按“全量 最近增量 歸檔日志”的順序回放可以把數(shù)據(jù)庫恢復(fù)到任意時間點。LIST BACKUPS查看現(xiàn)有備份集清單定期清理過期備份避免備份目錄被撐爆。參數(shù)說明備份語句里沒有指定壓縮參數(shù)時備份文件是不壓縮的幾百 G 的業(yè)務(wù)庫備份出來就是幾百 G。磁盤預(yù)算按數(shù)據(jù)量的 2 到 3 倍規(guī)劃比較穩(wěn)。增量備份的頻率取決于業(yè)務(wù)變更量日增量超過全量的 20% 時增量意義就不大了直接考慮加大全量頻率。恢復(fù)流程跟備份對應(yīng)按順序執(zhí)行RESTORE DATABASE FROM /backup/full_20250108.dmp; RECOVER DATABASE;邏輯說明先恢復(fù)全量備份再用歸檔日志把數(shù)據(jù)推進(jìn)到故障前的最新狀態(tài)。如果恢復(fù)了增量備份RECOVER 時數(shù)據(jù)庫會自動讀取歸檔目錄里的日志并應(yīng)用?;謴?fù)完成后手動執(zhí)行一次SELECT COUNT(*) FROM 核心表;做抽查確認(rèn)數(shù)據(jù)量正確再開放業(yè)務(wù)。4.2 巡檢 SQL十項檢查覆蓋日常健康日常巡檢不用搞得多復(fù)雜固定跑下面幾條 SQL能在三分鐘內(nèi)把數(shù)據(jù)庫基本狀態(tài)摸清楚。-- 1. 實例狀態(tài) SELECT NAME, OPEN_MODE, ROLE FROM V$DATABASE; -- 2. 當(dāng)前活躍會話 SELECT SID, STATUS, USERNAME, SQL_ID FROM V$SESSION WHERE STATUS ACTIVE; -- 3. 核心參數(shù)當(dāng)前值 SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME IN (MAX_CONNECTIONS, DATA_BUFFER_SIZE); -- 4. 表空間使用率 SELECT TABLESPACE_NAME, FILE_SIZE, FILE_SIZE - FREE_SIZE AS USED FROM DBA_DATA_FILES;邏輯說明前兩條負(fù)責(zé)“數(shù)據(jù)庫活著沒有”第三條確認(rèn)連接數(shù)和內(nèi)存配置是否被意外改動第四條看磁盤空間水位。表空間使用率超過 85% 就要預(yù)警特別是 UNDO 和 TEMP 表空間漲起來很突然。參數(shù)說明MAX_CONNECTIONS的值是否夠用不能只看數(shù)字要結(jié)合活躍會話數(shù)量判斷。DATA_BUFFER_SIZE是內(nèi)存緩存大小設(shè)太小會頻繁讀寫磁盤現(xiàn)場如果業(yè)務(wù)響應(yīng)慢優(yōu)先看這個參數(shù)而不是先去調(diào) SQL。巡檢不只看 SQL 結(jié)果還要看系統(tǒng)層的磁盤空間df -h /data/gaussdb邏輯說明數(shù)據(jù)庫盤寫滿的前兆往往是歸檔目錄先爆然后實例直接 hang 住。每天定時跑一遍df -h比任何監(jiān)控系統(tǒng)都直接。4.3 日志文件從啟動日志和告警日志判斷狀態(tài)GaussDB 100 運行日志在/data/gaussdb/log下常見的文件是運行日志和告警日志。實例起不來、連接異常、備份失敗第一反應(yīng)都應(yīng)該是看日志而不是改參數(shù)。tail -n 100 /data/gaussdb/log/alert.log邏輯說明告警日志記錄實例啟動、關(guān)閉、錯誤、主備切換等關(guān)鍵事件格式是時間戳加描述。排查問題時按時間點先定位告警日志再翻運行日志里對應(yīng)的報錯堆棧比漫無目的翻整個目錄高效很多。參數(shù)說明日志文件會持續(xù)增長日志輪轉(zhuǎn)按大小或日期配置。默認(rèn)如果沒有開啟輪轉(zhuǎn)策略建議定期清理超過 30 天的日志否則日志目錄會悄悄漲到幾十 G到時候再清就晚了。5. 避坑記錄安裝與主備現(xiàn)場的五個常見問題現(xiàn)象 → 原因 → 解決5.1 安裝腳本報 /dev/shm 空間不足現(xiàn)象執(zhí)行初始化時提示 shared memory 不足實例啟動后自動退出。原因GaussDB 100 的內(nèi)存相關(guān)參數(shù)會占用共享內(nèi)存而/dev/shm默認(rèn)只有物理內(nèi)存的一半數(shù)據(jù)庫初始化時創(chuàng)建的共享內(nèi)存段超出了限制。解決調(diào)大/dev/shm在/etc/fstab里修改掛載參數(shù)然后重新掛載。mount -o remount,size16G /dev/shm參數(shù)說明按物理內(nèi)存的 1/4 到 1/2 設(shè)置16G 是常見起步值。改完務(wù)必執(zhí)行df -h /dev/shm確認(rèn)生效再重新跑初始化腳本。5.2 zsql 連接一直超時1888 端口不通現(xiàn)象zsql sys/pwdIP:1888卡住很久然后報網(wǎng)絡(luò)超時。原因最常見是數(shù)據(jù)庫監(jiān)聽只綁定了 127.0.0.1或者防火墻沒放行 1888 端口。還有一次現(xiàn)場是服務(wù)器上有多個網(wǎng)卡應(yīng)用走業(yè)務(wù)網(wǎng)卡數(shù)據(jù)庫卻監(jiān)聽在管理網(wǎng)卡上。解決先用ss -lntp | grep 1888看監(jiān)聽地址再用curl或telnet從應(yīng)用端測端口連通性。確認(rèn)是監(jiān)聽問題就改配置# 修改監(jiān)聽 IP ALTER SYSTEM SET LISTEN_IP 0.0.0.0 SCOPE BOTH;邏輯說明SCOPE BOTH表示參數(shù)同時寫入內(nèi)存和配置文件重啟實例也生效。如果不加 SCOPE修改只對當(dāng)前會話有效重啟后打回原形。5.3 主備同步延遲持續(xù)上漲備機(jī)永遠(yuǎn)追不上現(xiàn)象備機(jī)V$DATABASE里的日志應(yīng)用位點跟主機(jī)差距越來越大數(shù)據(jù)落地到備機(jī)延遲幾十分鐘甚至幾小時。原因備機(jī)上跑了重量級報表查詢?nèi)罩緫?yīng)用進(jìn)程分不到足夠的 IO 和 CPU或者主機(jī)歸檔目錄所在的磁盤空間不足歸檔日志被刪了備機(jī)斷鏈后只能重新全量同步。解決把備機(jī)的報表業(yè)務(wù)限流或遷移走確保日志應(yīng)用進(jìn)程優(yōu)先同時給歸檔目錄擴(kuò)容并配置歸檔刪除策略至少保留 24 小時的歸檔日志作為緩沖。5.4 主備恢復(fù)時報數(shù)據(jù)文件路徑不一致現(xiàn)象在備機(jī)執(zhí)行RESTORE DATABASE時報數(shù)據(jù)文件目錄跟備份記錄不匹配。原因備機(jī)的數(shù)據(jù)目錄路徑跟主機(jī)不一致。備份文件里記錄的是主機(jī)上絕對路徑備機(jī)環(huán)境如果目錄布局不同恢復(fù)時校驗就失敗。解決保持兩臺機(jī)器數(shù)據(jù)目錄完全一致我在搭建文檔里會固定寫成/data/gaussdb/data不允許定制路徑。已經(jīng)出問題的話把備機(jī)數(shù)據(jù)目錄調(diào)整為主機(jī)同樣的路徑重新執(zhí)行恢復(fù)不要用軟鏈接糊弄恢復(fù)過程不認(rèn)這個。5.5 實例啟動后文件權(quán)限報錯現(xiàn)象啟動日志里出現(xiàn)大量 permission denied實例一直無法進(jìn)入 OPEN 狀態(tài)。原因初始化時用 root 執(zhí)行了解壓或建目錄導(dǎo)致數(shù)據(jù)文件屬主不是 gaussdb 用戶或者 SELinux 沒有真正關(guān)閉。解決遞歸改屬主確認(rèn) SELinux 狀態(tài)后重新啟動。chown -R gaussdb:dba /data/gaussdb getenforce注意setenforce 0只是臨時關(guān)閉重啟后會恢復(fù) enforcing。必須改/etc/selinux/config里的配置否則下次重啟同樣的問題再冒出來。6. 加一個自動化巡檢腳本跑一遍再下結(jié)論手動巡檢每次要敲好幾條命令我的習(xí)慣是把它們封成一個腳本固定在每天的業(yè)務(wù)低峰期執(zhí)行一次異常直接寫進(jìn)告警文件。#!/bin/bash # 簡易巡檢腳本適用于 GaussDB 100 單機(jī)和主備場景 DB_USERsys DB_PWDYourPassword DB_HOST127.0.0.1:1888 ALERT_LOG/data/gaussdb/log/alert.log RESULT_LOG/data/check_result.log # 實例狀態(tài)檢查 INST_STATUS$(zsql $DB_USER/$DB_PWD$DB_HOST -c \ SELECT STATUS FROM V$INSTANCE; | grep -i open) if [ -z $INST_STATUS ]; then echo $(date) [ERROR] instance is not open $RESULT_LOG exit 1 fi # 磁盤空間檢查 DISK_USAGE$(df -h /data/gaussdb | awk NR2 {print $5} | sed s/%//) if [ $DISK_USAGE -gt 85 ]; then echo $(date) [WARN] disk usage ${DISK_USAGE}% $RESULT_LOG fi # 告警日志檢查最近N條 RECENT_ERR$(grep -i error\|failed $ALERT_LOG | tail -n 20) if [ -n $RECENT_ERR ]; then echo $(date) [WARN] recent error in alert log $RESULT_LOG fi echo $(date) [INFO] health check done $RESULT_LOG邏輯說明腳本第一部分檢查實例狀態(tài)第二部分檢查磁盤水位第三部分掃告警日志里的錯誤關(guān)鍵字。三個檢查覆蓋了數(shù)據(jù)庫最核心的存活、空間、異常三個維度足夠日常值班使用。腳本放到 crontab 里定時跑0 8 * * * /home/gaussdb/check_gaussdb.sh每次看check_result.log里有沒有新增的[ERROR]或[WARN]行就行。這個腳本的定位是兜底不替代真正的監(jiān)控系統(tǒng)但勝在輕量、不依賴外部組件任何一臺部署了 GaussDB 100 的機(jī)器都能直接用。把數(shù)據(jù)庫密碼寫進(jìn)腳本有風(fēng)險現(xiàn)場如果對安全要求高建議改成從環(huán)境變量讀取或使用加密的連接配置。相信我比起事到臨頭到處翻日志每天掃一眼這個幾行輸出心里會踏實得多。從那以后我每次部署 GaussDB 100裝完第一件事就是把這個腳本配上再手動跑一遍SELECT NAME, OPEN_MODE, ROLE FROM V$DATABASE;確認(rèn)主備角色正確然后才敢說環(huán)境交付了。希望這些步驟和踩坑記錄能幫到你。本文還有配套的精品資源點擊獲取