1. gs_ctl 介紹
gs_ctl可以啟動、停止、以及控制GaussDB伺服器雙機間的操作。
啟動資料庫的文法

停止資料庫的文法
控制資料庫的文法
雙機控制指令的文法
2. 模式介紹
- 在start模式下,會啟動一個新的伺服器。
-
在stop模式下,正在特定資料目錄下運作的伺服器将被關閉。使用-m選項可以選擇以下三種不同的關閉模式:
“smart” 模式等待所有用戶端中斷連接配接。如果伺服器處于緊迫等待,一旦所有的客戶斷開連接配接,恢複和複制流将會中斷。
"fast"模式并不等待用戶端中斷連接配接,所有活躍事務都被復原并且用戶端都被強制斷開,然後伺服器也被關閉。
“immediate” 模式将在沒有完全關閉的情況下強行退出,在下次重新啟動的時候導緻故障恢複。
- restart模式下,以目前的運作參數重新啟動伺服器。對于雙機模式,restart指令與伺服器目前的角色相比對。
- reload模式簡單地給gaussdb程序發送一個SIGHUP信号,導緻它重新讀取配置檔案( postgresql.conf, pg_hba.conf ),這樣就允許修改部配置設定置檔案選項而不用重新開機系統即可生效。
- status模式檢查伺服器是否在指定的資料目錄下運作。如果是,顯示其PID和調用它的指令行選項。
- kill模式允許給一個指定的程序發送信号,使用 --help檢視支援的信号名字清單。
- switchover模式允許主機與備機之間、備機與級聯備機之間或級聯備機與次級聯備機之間進行角色切換,切換成功之後,切換的兩個角色互換,例如主機降為備機,備機升為主機,繼續為使用者提供資料庫服務。
- failover模式是在主機發生故障時,将備機、級聯備機或次級聯備機升為主機繼續為使用者提供資料庫服務,或在備機發生故障時,将級聯備機或次級聯備機升為備機,或在級聯備機發生故障時,将次級聯備機升為級聯備機。
- query模式可以查詢雙機運作時主機與備機之間、備機與級聯備機之間或者級聯備機與次級聯備機之間的狀态資訊,為管理者提供實時的資料庫運作狀态,便于管理者管理資料庫。
- notify模式可以通知資料庫,使其成為主機、備機、級聯備機或次級聯備機。
- build模式可以在主機和備機之間無法建立雙機關系時,重建備機,或者在備機與級聯備機之間無法建立雙機關系時,重建級聯備機,或者在級聯備機與次級聯備機之間無法建立雙機關系時,重建次級聯備機。
- querybuild模式可以檢視資料庫的重建進度,為管理者提供實時的資料庫重建狀态,便于管理者管理資料庫。
參數說明
參數 | 參數說明 | 取值範圍 |
-D, --pgdata=DATADIR | 聲明該資料庫的檔案系統位置。 | DATADIR的取值必須為有效的資料目錄。 預設值:如果省略此參數,則使用GAUSSDATA環境變量。 |
-m, --mode=MODE | 聲明關閉模式或雙機正常時切換的切換模式。 | mode的取值: smart/m:等待所有用戶端中斷連接配接後才關閉或切換。如果伺服器處于緊迫等待,一旦所有的客戶斷開連接配接,恢複和複制流将會中斷。 fast/f:不等待用戶端中斷連接配接,所有活躍事務都被復原并且用戶端都被強制斷開,然後伺服器将被關閉或切換。 immediate/i:強行關閉,在下次重新啟動的時候将導緻故障恢複。 預設值為fast。 |
-M | -M後面需要跟SERVERMODE參數,表示在啟動時指定資料庫的啟動模式。 | SERVERMODE可以取下面五個值: primary:本端以主機模式啟動或資料庫升為主機模式 standby:本端以備機模式啟動或資料庫升為備機模式。 cascadestandby:本端以級聯備機模式啟動或資料庫升為級聯備機模式。 cascadestandby1:本端以次級聯備機模式啟動。 pending:本端處于等待狀态,等待提升為主機、備機、級聯備機或次級聯備機。 |
-r, --recvtimeout=INTERVAL | 當備機重建時,如果備機從主機接收資料的時間間隔超過指定的時間,便會重建失敗,并列印相關提示資訊。 當級聯備機重建時,如果級聯備機從備機接收資料的時間間隔超過指定的時間,便會重建失敗,并會列印相關提示資訊。 同樣,當次級聯備機重建時,如果次級聯備機從級聯備機接收資料的時間間隔超過指定的時間,便會重建失敗,并會列印相關提示資訊。 指定主備間通信逾時時間,預設值為60秒,此參數需要與配置檔案中的wal_sender_timeout值保持一緻。 | 取值範圍:整型(秒)。 |
-t, --timeout=SECS | 這個參數同時控制如下兩個功能: 等待資料庫啟動或者關閉完成的最大秒數。 等待雙機正常時切換完成的最大秒數。 | 取值範圍:整型(秒)。 預設值: 等待資料庫啟動或者關閉完成:60秒。 等待雙機正常是切換完成:150秒。 |
-T | 查詢status時指定此參數,不會以trust模式嘗試建立與資料庫的連接配接。LINUX平台上pg_hba.conf中對于localhost的認證方式不為trust時,查詢status需要指定此參數。 | - |
-V , --version | 列印gs_ctl的版本資訊然後退出。 | - |
-w | 等待操作的完成。等待是關閉和啟動時的預設值。 | - |
-W | 不等待操作的完成。 | - |
-U USERNAME | 指定連接配接資料庫的使用者。 說明: 此參數隻能與failover、switchover、notify、query和querybuild參數配合使用。 | 取值範圍:GaussDB中存在的使用者。 預設值:省略此參數則使用與目前作業系統使用者同名的使用者。 |
-P PASSWORD | 與-U參數配合使用,指定連接配接本地資料庫的使用者密碼。 說明: 當省略-U參數,且認證方法為trust時,-P參數無效。 | 要符合密碼複雜度要求。 如果省略此參數: 優先使用環境變量GAUSSPASSWORD的值作為-U參數指定使用者的密碼。 如果環境變量GAUSSPASSWORD的值為空或者錯誤,則會提示密碼錯誤。 |
-K WALLETKEY | 該參數指定開啟資料加密功能時使用的錢夾密碼。 說明: 一旦設定了錢夾密碼,啟動資料庫時必須通過該參數指定錢夾密碼,否則資料庫啟動失敗。 | - |
-?, --help | 顯示關于gs_ctl指令行參數的幫助資訊,然後退出。 | - |
啟動或重新開機選項
參數 | 參數說明 | 取值範圍 |
-c, --core-file | 允許gaussdb程序産生核心檔案。 | - |
-l, --log=FILENAME | 把伺服器日志輸出附加在FILENAME檔案上。 | FILENAME的取值為啟動資料庫服務的使用者有權限的檔案。 例如,data目錄下的某檔案。 |
-L | 當指定此參數時,不記錄gs_ctl産生的日志。 當不指定此參數時,記錄gs_ctl 産生的日志。 | 日志記錄位置取決于配置檔案postgresql.conf 中參數log_destination的值: 當log_destination的值為syslog時,記錄gs_ctl的日志到檔案/var/log/messages中。 當log_destination的值為其他值時,記錄gs_ctl的日志到檔案gs_ctl-current.log中。 預設不指定此參數,記錄gs_ctl産生的日志。 |
-o OPTIONS | 聲明要直接傳遞給由GaussDB執行的gaussdb的指令行選項。 參數通常都用單或者雙引号包圍以保證它們作為一個整體傳遞。 | gaussdb支援的參數。 |
-P PATH-TO-POSTGRES | 聲明gaussdb可執行檔案的位置。 | 預設位于gs_ctl自身所在目錄,一般不需要此選項。 |
相關檔案
1.postmaster.pid
這個檔案存在于資料目錄中是為了幫助gs_ctl判斷伺服器目前是否在運作。
2.postmaster.opts
如果這個檔案存在于資料目錄,gs_ctl将把檔案的内容當作傳遞給GaussDB指令的選項傳遞過去,除非被-o選項覆寫。這個檔案的内容也會在status模式裡顯示出來。
3.gs_ctl-current.log
這個檔案記錄gs_ctl産生的日志。該檔案的位置可能有兩個,當配置檔案中log_directory指定的路徑對系統管理者有效時,日志記錄到log_directory所指的路徑下;當配置檔案中log_directory指定的路徑對系統管理者無效時,日志記錄到$GAUSSHOME/bin目錄下。
4.gs_ctl - 年 - 月 - 日_HHMMSS.log
這個檔案是當gs_ctl-current.log檔案大小滿16M後,根據目前時刻,對gs_ctl-current.log重命名生成的檔案。
示例
1.啟動伺服器
啟動伺服器,等到伺服器啟動了才退出:
伺服器使用5433端口,而且不帶fsync(強制刷盤)運作,使用:
2.停止伺服器
gs_ctl stop
使用-m選項允許使用者控制伺服器的關閉方式:
gs_ctl stop -m fast
3.顯示伺服器狀态
下面是來自gs_ctl的狀态輸出的例子:
gs_ctl statusgs_ctl: server is running (PID: 8797)
/usr/local/pgdata/install/bin/gaussdb