
Table of Contents
1、服務器準備
- 操作系統
openEuler20.03 SP3,x86_64架構。
openEuler 22.03 LTS SP3 是openEuler 22.03 LTS的補丁版本,生命周期與LTS版本相同。
- 內存
4G
4G用于學習或者測試;生產環境根據資源情況分配,至少要8G以上。
- 存儲
/ 100G
/gauss 200G
掛載目錄 /gauss ,如果是測試,給個200G虛擬磁盤;如果是生產根據業務需求及資源情況分配。
- CPU
2C
2C 是測試環境的最低要求;生產環境根據資源情況分配,至少8C以上。
- 主機名
qdog160
主機名見文知意,符合業務要求即可。可用 hostnamectl set-hostname [主機名] 修改。
2、操作系統環境準備
- hosts文件配置
echo "192.168.59.160 qdpg160" >> /etc/hosts
- 創建用戶組
groupadd dbgrp
useradd -g dbgrp -d /home/omm -m omm
echo Zqd@123 | passwd --stdin omm
- 創建相關目錄
cd /gauss
mkdir -p {gaussdb,archive,scripts,backup,soft}
chown -R omm:dbgrp /gauss
- 修改內核參數
#編輯 sysctl.conf 文件
vim /etc/sysctl.conf
#將下面的參數加入 sysctl.conf 文件
vm.swappiness=1
fs.aio-max-nr=1048576
fs.file-max=6815744
net.ipv4.tcp_retries1=5
net.ipv4.tcp_syn_retries=5
net.ipv4.tcp_synack_retries=5
net.ipv4.tcp_retries2=12
net.ipv4.ip_local_port_range=26000 65535
vm.min_free_kbytes=512000
net.ipv4.tcp_fin_timeout=60
net.ipv4.tcp_sack=1
net.ipv4.tcp_timestamps=1
vm.extfrag_threshold=500
vm.overcommit_ratio=90
#加載內核參數,此操作只針對文件中的動態參數可以生效,靜態參數依然需要重啟系統才可生效。
sysctl -p
- 關閉透明大頁
#檢查透明大頁當前狀態,[]內的值是always,說明是開啟狀態。
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
#編輯開機自啟動任務腳本文件 rc.local
vim /etc/rc.d/rc.local
#在文件末尾加入下面的shell(如果不重啟服務器,直接執行如下shell,可以立即生效)
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
#給開機自啟動任務腳本文件 rc.local 添加執行權限
chmod +x /etc/rc.d/rc.local
#此時再進行檢查,透明大頁已關閉
[root@qdpg154 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
[root@qdpg154 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
- 禁用RemoveIPC
#禁用RemoveIPC
sed -i '/^RemoveIPC/d' /etc/systemd/logind.conf
sed -i '/^RemoveIPC/d' /usr/lib/systemd/system/systemd-logind.service
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service
#重新加載參數生效
systemctl daemon-reload
systemctl restart systemd-logind
RemoveIPC是控制 用戶 完全退出操作系統時,是否自動清理其創建的IPC對象(例如共享內存段、信號量等)。如果設置為yes,則會清理,如果設置為no,則不會清理。
這本來是操作系統用于防止用戶完全退出操作系統后,其殘留的IPC資源繼續占用系統資源,以及避免其他用戶或者進程可能會訪問到其殘留的共享內存中的數據等問題。
但是對于數據庫而言,這個參數如果設置為yes,那么當數據庫用戶完全退出操作系統時,數據庫核心進程所使用的共享內存段就被操作系統清理了,數據庫隨之崩潰。
但是我檢查了 openEuler20.03 的 RemoveIPC 參數,發現其默認值就是 no , 但是官方說要配置,那還是配置一下,防止意外。
- 資源限制參數
#編輯limits.conf
vim /etc/security/limits.conf
#將下面的限制參數,加入 limits.conf 文件。
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft stack 65535
* hard stack 65535
* soft memlock 65535
* hard memlock 65535
openGauss 的安裝程序會修改資源限制參數,但是它修改的資源限制參數有些夸張,這里還是自定義。
openGauss的安裝程序會自己生成環境變量,在安裝完成后,記得在omm的用戶的 .bashrc 環境變量文件中,刪除資源限制參數;否則會出一些問題。

- 修改安全配置
#禁用 selinux
setenforce 0
sed -i 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config
#禁用防火墻
systemctl stop firewalld
systemctl disable firewalld
- libreadline.so 調整
openEuler20.03 SP3 操作系統沒有 libreadline.so.7,但在openGauss安裝程序的第6步、第7步都需要用到libreadline.so.7。所以需要創建軟鏈接解決兼容性問題。
#查看 openEuler20.03 SP3 的共享庫
ldconfig -p | grep libreadline.so
#創建軟鏈接
cd /usr/lib64
ln -s libreadline.so.8 libreadline.so.7
3、上傳、解壓 openGauss3.10企業版 軟件包
上傳到 /gauss/soft 目錄,解壓它。
tar -zxvf openGauss-3.1.0-openEuler-64bit-all.tar.gz tar -jxvf openGauss-3.1.0-openEuler-64bit.tar.bz2 -C /gauss/gaussdb/
4、執行安裝程序
進入到 openGauss-3.1.0-openEuler-64bit.tar.bz2 解壓后的 simpleInstall 目錄,找到 install.sh 安裝腳本文件,執行它。
su - omm
cd /gauss/gaussdb/simpleInstall
./install.sh -w Omm_5228 #這里的 -w Omm_5228 是指定數據庫初始化用戶的密碼。
安裝程序在第7步時會啟動數據庫,可以在安裝完后檢查數據庫狀態。
#查詢數據庫狀態
gs_ctl query -D /gauss/gaussdb/data/single_node -Z single_node
#輸出如下時,說明數據庫處于一個正常狀態,也說明部署成功了。
[2025-08-07 21:47:33.795][9614][][gs_ctl]: gs_ctl query ,datadir is /gauss/gaussdb/data/single_node
HA state:
local_role : Normal
static_connections : 0
db_state : Normal
detail_information : Normal
Senders info:
No information
Receiver info:
No information
安裝程序的輸出,因為太長太多,所以放在博客末尾供各位同學參考。
5、安裝后的一些操作
openGauss 的安全策略做的很好,在剛安裝完成后,只能遠程登錄,不能遠程登錄。而且初始化用戶,也就是管理用戶是無論怎樣,都不允許遠程登錄。
5.1、先使用初始化用戶本地登錄
寫到這里,對于新接觸openGauss的同學,可以先思考下初始化用戶是哪個?
思考 3 秒結束…
答案是 omm 用戶,是我們一開始創建的omm操作系統用戶;這一點在執行安裝程序的輸出中的第6步可以看得到。
#安裝程序的輸出相關 demo:
[step 6]: init datanode
The files belonging to this database system will be owned by user “omm”.
This user must also own the server process.
gsql -d postgres -p 5432 -U omm
5.2、創建普通用戶,用于遠程連接 openGauss
#創建用戶
create user zqd with password 'Zqd_2025';
#創建數據庫
create database userdb owner zqd;
#授權
grant all privileges on all tables in schema public to zqd;
grant all privileges on database userdb to zqd;
grant all privileges to zqd;
5.3、修改 listen_addresses 參數
listen_addresses 參數可以在postgresql.conf中修改,然后重啟數據庫;也可以在gsql命令行中修改,然后重啟數據庫。推薦在gsql命令行中修改。
alter system set listen_addresses='0.0.0.0';
然后,重啟數據庫。
gs_ctl restart -D /gauss/gaussdb/data/single_node -Z single_node
5.4、修改 pg_hba.conf 文件
在集群環境下,可以使用 gs_guc 命令修改,但是單機環境使用此命令可能會出問題;所以建議直接修改 pg_hba.conf 文件。
cd /gauss/gaussdb/data/single_node
#編輯pg_hba.conf文件
vim pg_hba.conf
#在 # IPv4 local connections: 下添加如下內容:
#TYPE DATABASE USER ADDRESS METHOD
host userdb zqd 192.168.59.1/24 sha256
然后,重啟數據庫。
gs_ctl restart -D /gauss/gaussdb/data/single_node -Z single_node
此時已經可以用zqd用戶進程遠程登錄。

6、附錄:安裝程序輸出
輸出末尾,有 openGauss 的啟動、停止、重啟命令。
輸出相關demo:
[complete successfully]: You can start or stop the database server using:
gs_ctl start|stop|restart -D $GAUSSHOME/data/single_node -Z single_node’
安裝程序輸出:
[omm@qdog160:/gauss/gaussdb/simpleInstall]$./install.sh -w Omm_5228
[step 1]: check parameter
[step 2]: check install env and os setting
[step 3]: change_gausshome_owner
[step 4]: set environment variables
[step 6]: init datanode
The files belonging to this database system will be owned by user "omm".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
creating directory /gauss/gaussdb/data/single_node ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
Begin init undo subsystem meta.
[INIT UNDO] Init undo subsystem meta successfully.
creating template1 database in /gauss/gaussdb/data/single_node/base/1 ... The core dump path is an invalid directory
2025-08-07 15:45:35.083 [unknown] [unknown] localhost 139793166476160 0[0:0#0] [BACKEND] WARNING: macAddr is 12/701730088, sysidentifier is 797139/2368214680, randomNum is 3863615128
ok
initializing pg_authid ... ok
setting password ... ok
initializing dependencies ... ok
loading PL/pgSQL server-side language ... ok
creating system views ... ok
creating performance views ... ok
loading system objects' descriptions ... ok
creating collations ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
initialize global configure for bucketmap length ... ok
creating information schema ... ok
loading foreign-data wrapper for distfs access ... ok
loading foreign-data wrapper for log access ... ok
loading hstore extension ... ok
loading foreign-data wrapper for MOT access ... ok
loading security plugin ... ok
update system tables ... ok
creating snapshots catalog ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
freezing database template0 ... ok
freezing database template1 ... ok
freezing database postgres ... ok
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run gs_initdb.
Success. You can now start the database server of single node using:
gaussdb -D /gauss/gaussdb/data/single_node --single_node
or
gs_ctl start -D /gauss/gaussdb/data/single_node -Z single_node -l logfile
[step 7]: start datanode
[2025-08-07 15:45:53.156][10531][][gs_ctl]: gs_ctl started,datadir is /gauss/gaussdb/data/single_node
[2025-08-07 15:45:53.196][10531][][gs_ctl]: waiting for server to start...
.0 LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env.
0 LOG: [Alarm Module]Host Name: qdog160
0 LOG: [Alarm Module]Host IP: qdog160. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>
0 LOG: [Alarm Module]Cluster Name: dbCluster
0 LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 57
0 WARNING: failed to open feature control file, please check whether it exists: FileName=gaussdb.version, Errno=2, Errmessage=No such file or directory.
0 WARNING: failed to parse feature control file: gaussdb.version.
0 WARNING: Failed to load the product control file, so gaussdb cannot distinguish product version.
The core dump path is an invalid directory
2025-08-07 15:45:53.280 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: when starting as multi_standby mode, we couldn't support data replicaton.
gaussdb.state does not exist, and skipt setting since it is optional.2025-08-07 15:45:53.291 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env.
2025-08-07 15:45:53.291 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: [Alarm Module]Host Name: qdog160
2025-08-07 15:45:53.291 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: [Alarm Module]Host IP: qdog160. Copy hostname directly in case of taking 10s to use 'gethostbyname' when /etc/hosts does not contain <HOST IP>
2025-08-07 15:45:53.291 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: [Alarm Module]Cluster Name: dbCluster
2025-08-07 15:45:53.291 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 57
2025-08-07 15:45:53.294 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: loaded library "security_plugin"
2025-08-07 15:45:53.295 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2025-08-07 15:45:53.296 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets
2025-08-07 15:45:53.296 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] WARNING: No explicit IP is configured for listen_addresses GUC.
2025-08-07 15:45:53.296 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: InitNuma numaNodeNum: 1 numa_distribute_mode: none inheritThreadPool: 0.
2025-08-07 15:45:53.297 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: reserved memory for backend threads is: 220 MB
2025-08-07 15:45:53.297 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: reserved memory for WAL buffers is: 128 MB
2025-08-07 15:45:53.297 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: Set max backend reserve memory is: 348 MB, max dynamic memory is: 11071 MB
2025-08-07 15:45:53.297 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: shared memory 356 Mbytes, memory context 11419 Mbytes, max process memory 12288 Mbytes
2025-08-07 15:45:53.387 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [CACHE] LOG: set data cache size(402653184)
2025-08-07 15:45:53.460 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [SEGMENT_PAGE] LOG: Segment-page constants: DF_MAP_SIZE: 8156, DF_MAP_BIT_CNT: 65248, DF_MAP_GROUP_EXTENTS: 4175872, IPBLOCK_SIZE: 8168, EXTENTS_PER_IPBLOCK: 1021, IPBLOCK_GROUP_SIZE: 4090, BMT_HEADER_LEVEL0_TOTAL_PAGES: 8323072, BktMapEntryNumberPerBlock: 2038, BktMapBlockNumber: 25, BktBitMaxMapCnt: 512
2025-08-07 15:45:53.524 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: gaussdb: fsync file "/gauss/gaussdb/data/single_node/gaussdb.state.temp" success
2025-08-07 15:45:53.524 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: create gaussdb state file success: db state(STARTING_STATE), server mode(Normal), connection index(1)
2025-08-07 15:45:53.661 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: max_safe_fds = 976, usable_fds = 1000, already_open = 14
The core dump path is an invalid directory
2025-08-07 15:45:53.662 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: user configure file is not found, it will be created.
2025-08-07 15:45:53.664 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: the configure file /gauss/gaussdb/etc/gscgroup_omm.cfg doesn't exist or the size of configure file has changed. Please create it by root user!
2025-08-07 15:45:53.664 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [BACKEND] LOG: Failed to parse cgroup config file.
2025-08-07 15:45:53.729 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] WARNING: Failed to obtain environment value $GAUSSLOG!
2025-08-07 15:45:53.729 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] DETAIL: N/A
2025-08-07 15:45:53.729 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] CAUSE: Incorrect environment value.
2025-08-07 15:45:53.729 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] ACTION: Please refer to backend log for more details.
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] WARNING: Failed to obtain environment value $GAUSSLOG!
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] DETAIL: N/A
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] CAUSE: Incorrect environment value.
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] ACTION: Please refer to backend log for more details.
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] WARNING: Failed to obtain environment value $GAUSSLOG!
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] DETAIL: N/A
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] CAUSE: Incorrect environment value.
2025-08-07 15:45:53.741 [unknown] [unknown] localhost 139938700800896 0[0:0#0] 0 [EXECUTOR] ACTION: Please refer to backend log for more details.
[2025-08-07 15:45:54.556][10531][][gs_ctl]: done
[2025-08-07 15:45:54.556][10531][][gs_ctl]: server started (/gauss/gaussdb/data/single_node)
import sql file
Would you like to create a demo database (yes/no)? yes
Load demoDB [school,finance] success.
[complete successfully]: You can start or stop the database server using:
gs_ctl start|stop|restart -D $GAUSSHOME/data/single_node -Z single_node'




