部署
版本選擇
通過openGuass官網下載地址 ,我們可以看到它支持x86_64
與Aarch64
兩種平臺,又分成openEuler 22、openEuler 20、Centos 7以及Docker 版本。
進入CentOS 7標簽,看到又分成企業版、輕量版、極簡版與分布式鏡像版。
本文只討論CentOS 7系統,所以下載的是x86_64
平臺的CentOS 7 的輕量版中的6.0.1版本。(輕量版相比企業版,少了集群管理工具。)
上傳到主機
openGauss安裝與運行的用戶不能是root。
所以我們新建一個用戶user1,然后把openGauss-Server-6.0.1-CentOS7-x86_64.tar.bz2
上傳到CenOS 7的主機上,解壓到user1的$HOME
目錄中。
之后我們以user1用戶登錄,就會發現當前目錄(即$HOME
)下是從openGauss安裝包解壓出來的全部文件。
目錄列表如下:
[user1@localhost ~]$ ls
bin data etc include jre lib logs share simpleInstall version.cfg
我們進入simpleInstall:
[user1@loaclhost ~]$ cd simpleInstall
會看到一個install.sh
,還有一個README.md
。
通過閱讀README.md
文件,安裝openGauss的過程非常簡單,只需要執行sh install.sh -w password
(password是初始化數據庫的密碼,需要滿足復雜度要求)即可。
但是,我們直接執行,卻會報一個SEMMNI的錯誤:
[step 1]: check parameter
[step 2]: check install env and os setting
On systemwide basis, the maximum number of SEMMNI is not correct. the current SEMMNI value is: 128. Please
check it.
The required value should be greater than 321. You can modify it in file '/etc/sysctl.conf'.
通過查詢官方文檔,我們發現是需要設置kernel.sem
。
比如可以執行:
[root@loachost ~]# sysctl -w kernel.sem=250 85000 250 330
或者現在/etc/sysctl.conf
里加入一行:
kernel.sem=250 85000 250 330
之后執行sysctl -p
。
設置好kernel.sem之后執行sh install.sh -w password
就一路順風了。
運行
因為我們是安裝的單機版,所以install.sh
執行之后,會把數據庫的數據目錄設置為$HOME/data/single_node
。
所以,我們后續的很多命令,只要需要指定數據目錄的地方,都需要使用-D $HOME/data/single_node
。
其中,install.sh
腳本還做了一件事,就是在當前用戶的.bashrc文件里,加入了openGauss相關的環境變量,即:
export GAUSSHOME=/home/user1
export PATH=$GAUSSHOME/bin:$PATH
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH
export GS_CLUSTER_NAME=dbCluster
ulimit -n 1000000
之后就可以通過$GAUSSHOME來表示數據庫安裝路徑了。
gs_ctl
控制啟停的命令是gs_ctl
,執行的時候加上數據目錄。
如:
[user1@localhost ~]$ gs_ctl stop -D data/single_node
[2025-07-18 06:52:22.364][5624][][gs_ctl]: gs_ctl stopped ,datadir is /home/user1/data/single_node
waiting for server to shut down.... done
server stopped
或者:
[user1@localhost ~]$ gs_ctl start -D data/single_node
[2025-07-18 06:52:28.781][5634][][gs_ctl]: gs_ctl started,datadir is /home/user1/data/single_node
[2025-07-18 06:52:28.815][5634][][gs_ctl]: waiting for server to start...
配置
默認地,openGauss只監聽本地端口,我們可以改變這個配置。
數據庫路徑下的postgresql.conf,其中有監聽地址與端口的配置。
# - Connection Settings -#listen_addresses = 'localhost' # what IP address(es) to listen on;# comma-separated list of addresses;# defaults to 'localhost'; use '*' for all# (change requires restart)
#local_bind_address = '0.0.0.0'
#port = 5432
其中,
listen_address
監聽地址port
端口
改好以后重啟,openGauss就監聽在我們指定的IP和端口上了。
但是這時候,如果我們在遠程連接這個數據庫,還會出錯:
gsql: FATAL: no pg_hba.conf entry for ...
只是需要我們在數據目錄下面的pg_hba.conf中,把我們的客戶端主機、用戶名以及認證方法加進去。
首先,本地登錄psql,在數據庫中創建用戶:
=# create user dbuser1 password 'dbpass@123';
CREATE ROLE
然后,我們在pg_hba.conf中, 加入一行:
host all dbuser1 192.168.56.0/24 sha256
就可以在遠程客戶機上使用dbuser1用戶登錄了,命令為:
gsql school -h 192.168.56.1 -U dbuser1
Password for user dbuser1:
gsql ((openGauss 6.0.1 build 84c20a90) compiled at 2025-01-17 17:29:32 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help. school=>