diff --git "a/content/zh/post/jiajunfeng/openGauss2-0-0\346\236\201\347\256\200\347\211\210\345\256\211\350\243\205.md" "b/content/zh/post/jiajunfeng/openGauss2-0-0\346\236\201\347\256\200\347\211\210\345\256\211\350\243\205.md" new file mode 100644 index 0000000000000000000000000000000000000000..47deff6f5295af1ff6deb829803925c387fa9a6c --- /dev/null +++ "b/content/zh/post/jiajunfeng/openGauss2-0-0\346\236\201\347\256\200\347\211\210\345\256\211\350\243\205.md" @@ -0,0 +1,406 @@ ++++ + +title = "openGauss2.0.0极简版安装" + +date = "2021-04-01" + +tags = ["openGauss安装部署"] + +archives = "2021-04" + +author = "贾军锋" + +summary = "openGauss2.0.0极简版安装" + +img = "/zh/post/jiajunfeng/title/img4.png" + +times = "15:30" + ++++ + +# openGauss2.0.0极简版安装 + +openGauss的安装在官方文档的描述中,一直以企业生产环境为标准进行安装部署。但在个人基本的功能测试需求下,这样的安装操作显得有些复杂。 + +在 openGauss 2.0.0 版本中\(2021.03.31发布\)新增了极简版的软件包,极简版安装的使用主体主要针对高校和个人测试环境,相对企业安装流程更简单快捷,更加适合高校学生或者个人功能测试的场景,该软件包中并不包含OM工具,采用脚本可以实现一键式安装部署。 + +本文通过使用极简版进行安装部署,希望基本的操作示例对大家能有所帮助。 + +软件环境: 包含了上一版本要求的软件依赖包,新增了openEuler x86环境下需要的libnsl软件包。 + +硬件环境: 极简版中对于硬件环境要求描述“个人开发者最低配置2核4G, 推荐配置4核8G。”,本次安装实验采用最低配置2c/4GB,操作系统使用CentOS7.6.1810。 + +极简版为了适应小内存机器,在部署时将部分重要内存参数设置较低,如:“shared\_buffers = 32MB”、“cstore\_buffers = 512MB”。 + +另外,极简版安装的数据库字符集将原先默认的SQL\_ACSII字符集改为en\_US.UTF-8,同时初始用户密码不做强制修改\[modify\_initial\_password = false\]。 + +## 运行环境配置 + +**1. 配置YUM源** + +``` +mkdir /etc/yum.repos.d/bak +mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ +wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo +yum clean all +``` + +**2. 安装依赖的软件包** + +``` +yum install libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core readline-devel -y +``` + +**3. 关闭安全设置** + +``` +## 关闭防火墙 +systemctl status firewalld +systemctl disable firewalld.service +systemctl stop firewalld.service +## 关闭SELinux +sed -i '/SELINUX=/d' /etc/selinux/config +echo "SELINUX=disabled" >> /etc/selinux/config +cat /etc/selinux/config|grep -v ^#|grep -v '^$' +``` + +**4. 设置时区** + +``` +rm -fr /etc/localtime +ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +ll /etc/localtime +``` + +**5. 关闭SWAP** + +``` +## 修改分区表文件,删除SWAP挂载信息 +cp /etc/fstab /etc/fstab.bak +sed -i '/swap/s/^/#/' /etc/fstab +cat /etc/fstab|grep -v ^#|grep -v '^$' +## 关闭swap +swapoff -a +``` + +**6. 配置操作系统内核参数** + +``` +## 极简安装但没有实现内核参数的自动化配置,这个有些不足,希望后续将参数配置写入脚本。 +## 此处参考之前的配置吧 +cat >> /etc/sysctl.conf << EOF +net.ipv4.tcp_max_tw_buckets = 10000 +net.ipv4.tcp_tw_reuse = 1 +net.ipv4.tcp_tw_recycle = 1 +net.ipv4.tcp_keepalive_time = 30 +net.ipv4.tcp_keepalive_probes = 9 +net.ipv4.tcp_keepalive_intvl = 30 +net.ipv4.tcp_retries1 = 5 +net.ipv4.tcp_syn_retries = 5 +net.ipv4.tcp_synack_retries = 5 +net.ipv4.tcp_retries2 = 12 +vm.overcommit_memory = 0 +net.ipv4.tcp_rmem = 8192 250000 16777216 +net.ipv4.tcp_wmem = 8192 250000 16777216 +net.core.wmem_max = 21299200 +net.core.rmem_max = 21299200 +net.core.wmem_default = 21299200 +net.core.rmem_default = 21299200 +net.ipv4.ip_local_port_range = 26000 65535 +kernel.sem = 250 6400000 1000 25600 +vm.min_free_kbytes = 102400 ##suggest to set as physical memory * 5% +net.core.somaxconn = 65535 +net.ipv4.tcp_syncookies = 1 +net.core.netdev_max_backlog = 65535 +net.ipv4.tcp_max_syn_backlog = 65535 +net.ipv4.tcp_fin_timeout = 60 +kernel.shmall = 1152921504606846720 +kernel.shmmax = 18446744073709551615 +net.ipv4.tcp_sack = 1 +net.ipv4.tcp_timestamps = 1 +vm.extfrag_threshold = 500 +vm.overcommit_ratio = 90 +EOF +sysctl -p +``` + +备注: openEuler操作系统需要关闭RemoveIPC,操作请参考官方文档。 + +## 创建普通用户和目录,并授权 + +``` +groupadd -g 1001 dbgrp +useradd -u 2001 -g dbgrp omm +mkdir -p /opt/software/openGauss +chown -R omm:dbgrp /opt +``` + +## 解压并一键式安装单机openGauss + +极简版软件包:openGauss-2.0.0-CentOS-64bit.tar.bz2 + +企业版软件包:openGauss-2.0.0-CentOS-64bit-all.tar.gz \(包含om工具\) + +单机部署的数据目录 --\> /opt/software/openGauss/data/single\_node + +主备部署的数据目录 --\> /opt/software/openGauss/data/master 和 /opt/software/openGauss/data/slave + +``` +## 解压软件包 +[root@db1 ~]# su - omm +[omm@db1 ~]$ cd /opt/software/openGauss/ +[omm@db1 openGauss]$ tar -jxf openGauss-2.0.0-CentOS-64bit.tar.bz2 -C /opt/software/openGauss/ +## 一键式脚本安装 +[omm@db1 openGauss]$ cd /opt/software/openGauss/simpleInstall/ +[omm@db1 simpleInstall]$ sh install.sh -w gauss@123 -p 26000 ## -w指定数据库初始用户密码、-p指定数据库端口 +[step 1]: check parameter +[step 2]: check install env and os setting +[step 3]: change_gausshome_owner +[step 4]: set environment variables +/home/omm/.bashrc: line 16: ulimit: open files: cannot modify limit: Operation not permitted +[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 /opt/software/openGauss/data/single_node ... ok +creating subdirectories ... ok +selecting default max_connections ... 100 +selecting default shared_buffers ... 32MB +creating configuration files ... ok +creating template1 database in /opt/software/openGauss/data/single_node/base/1 ... The core dump path is an invalid directory +2021-04-01 09:58:57.927 [unknown] [unknown] localhost 139899531253504 0 [BACKEND] WARNING: macAddr is 64022/1040773698, sysidentifier is 4195761672/4064452798, randomNum is 486318270 +... ... +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 /opt/software/openGauss/data/single_node --single_node +or + gs_ctl start -D /opt/software/openGauss/data/single_node -Z single_node -l logfile + +[step 7]: start datanode +[2021-04-01 09:59:21.027][8464][][gs_ctl]: gs_ctl started,datadir is /opt/software/openGauss/data/single_node +[2021-04-01 09:59:21.136][8464][][gs_ctl]: waiting for server to start... +0 LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env. +0 LOG: [Alarm Module]Host Name: db1 +0 LOG: [Alarm Module]Host IP: 127.0.0.1 +0 LOG: [Alarm Module]Cluster Name: dbCluster +0 LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 52 +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. +0 LOG: Failed to initialze environment for codegen. +The core dump path is an invalid directory +2021-04-01 09:59:21.359 [unknown] [unknown] localhost 140033854506752 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.2021-04-01 09:59:21.359 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: [Alarm Module]can not read GAUSS_WARNING_TYPE env. + +2021-04-01 09:59:21.359 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: [Alarm Module]Host Name: db1 +2021-04-01 09:59:21.359 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: [Alarm Module]Host IP: 127.0.0.1 +2021-04-01 09:59:21.359 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: [Alarm Module]Cluster Name: dbCluster +2021-04-01 09:59:21.359 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: [Alarm Module]Invalid data in AlarmItem file! Read alarm English name failed! line: 52 +2021-04-01 09:59:21.359 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: Transparent encryption disabled. +2021-04-01 09:59:21.365 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: loaded library "security_plugin" +2021-04-01 09:59:21.365 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] WARNING: could not create any HA TCP/IP sockets +2021-04-01 09:59:21.374 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] WARNING: No explicit IP is configured for listen_addresses GUC. +2021-04-01 09:59:21.374 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: InitNuma numaNodeNum: 1 numa_distribute_mode: none inheritThreadPool: 0. +2021-04-01 09:59:21.374 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: reserved memory for backend threads is: 220 MB +2021-04-01 09:59:21.374 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: reserved memory for WAL buffers is: 128 MB +2021-04-01 09:59:21.374 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: Set max backend reserve memory is: 348 MB, max dynamic memory is: 11097 MB +2021-04-01 09:59:21.374 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: shared memory 330 Mbytes, memory context 11445 Mbytes, max process memory 12288 Mbytes +2021-04-01 09:59:21.404 [unknown] [unknown] localhost 140033854506752 0 0 [CACHE] LOG: set data cache size(402653184) +2021-04-01 09:59:21.415 [unknown] [unknown] localhost 140033854506752 0 0 [CACHE] LOG: set metadata cache size(134217728) +2021-04-01 09:59:21.462 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: gaussdb: fsync file "/opt/software/openGauss/data/single_node/gaussdb.state.temp" success +2021-04-01 09:59:21.462 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: create gaussdb state file success: db state(STARTING_STATE), server mode(Normal) +2021-04-01 09:59:21.483 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: max_safe_fds = 977, usable_fds = 1000, already_open = 13 +The core dump path is an invalid directory +2021-04-01 09:59:21.484 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: user configure file is not found, it will be created. +2021-04-01 09:59:21.488 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: the configure file /opt/software/openGauss/etc/gscgroup_omm.cfg doesn't exist or the size of configure file has changed. Please create it by root user! +2021-04-01 09:59:21.488 [unknown] [unknown] localhost 140033854506752 0 0 [BACKEND] LOG: Failed to parse cgroup config file. + +[2021-04-01 09:59:22.143][8464][][gs_ctl]: done +[2021-04-01 09:59:22.143][8464][][gs_ctl]: server started (/opt/software/openGauss/data/single_node) +import sql file +Would you like to create a demo database (yes/no)? yes ## 创建Demo数据库 +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 +``` + +## 检查数据库 + +``` +[omm@db1 ~]$ echo "PATH=/opt/software/openGauss/bin:\$PATH" >> /home/omm/.bash_profile ## 配置PATH +[omm@db1 ~]$ source ~/.bash_profile +-bash: ulimit: open files: cannot modify limit: Operation not permitted ## 这里提示打开文件数量限制不能修改,这...... 代表resource limit参数脚本也没有做相应的配置 +[omm@db1 ~]$ gsql -d postgres -p 26000 -r +gsql ((openGauss 2.0.0 build 78689da9) compiled at 2021-03-31 21:04:03 commit 0 last mr ) +Non-SSL connection (SSL connection is recommended when requiring high-security) +Type "help" for help. + +postgres=# \l + List of databases + Name | Owner | Encoding | Collate | Ctype | Access privileges +-----------+-------+----------+-------------+-------------+------------------- + finance | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | -- 金融场景数据库示例 + postgres | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | + school | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | -- 学校场景数据库示例 + template0 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm + + | | | | | omm=CTc/omm + template1 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm + + | | | | | omm=CTc/omm +(5 rows) +``` + +## 总结 + +openGauss的极简安装没有使用OM工具,即不能使用OM工具对openGauss实例进行管理和配置。 + +openGauss极简版免去了用户配置XML文件的操作,也免去了配置1主+1备的配置操作,这简化了少许安装操作。 + +但是极简版个人感觉稍有些失望,所谓的"极"字并没有得到充分体现,系统内核参数、资源限制参数、环境变量配置、用户创建、目录创建和权限等等这些操作并没有实现自动化配置,脚本很简单但是并没有写入install脚本中。 + +个人对“极简”的期待是90分,实际感觉是60分,还有待完善,但值得期待。 + +## 附录:极简安装主备环境 + +``` +openGauss极简主备部署,脚本的基本操作就是分别单机安装主、备节点,然后配置主备关系并重建备库。同时,极简安装也会部署测试库finance和school。 +[omm@db1 ~]$ cd /opt/software/openGauss/ +[omm@db1 openGauss]$ tar -jxf openGauss-2.0.0-CentOS-64bit.tar.bz2 -C /opt/software/openGauss/ +[omm@db1 openGauss]$ cd /opt/software/openGauss/simpleInstall/ + +## 主备部署需要配合--multinode参数 +[omm@db1 simpleInstall]$ sh install.sh -w gauss@123 -p 26000 --multinode +[step 1]: check parameter +[step 2]: check install env and os setting +[step 3]: change_gausshome_owner +[step 4]: set environment variables + +/home/omm/.bashrc: line 16: ulimit: open files: cannot modify limit: Operation not permitted +[init primary 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 text search configuration will be set to "english". + +creating directory /opt/software/openGauss/data/master ... ok +creating subdirectories ... ok +selecting default max_connections ... 100 +selecting default shared_buffers ... 32MB +creating configuration files ... ok +creating template1 database in /opt/software/openGauss/data/master/base/1 ... The core dump path is an invalid directory +... ... +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 /opt/software/openGauss/data/master --single_node +or + gs_ctl start -D /opt/software/openGauss/data/master -Z single_node -l logfile + +[init slave 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 text search configuration will be set to "english". + +creating directory /opt/software/openGauss/data/slave ... ok +creating subdirectories ... ok +selecting default max_connections ... 100 +selecting default shared_buffers ... 32MB +creating configuration files ... ok +creating template1 database in /opt/software/openGauss/data/slave/base/1 ... The core dump path is an invalid directory +2021-04-01 10:16:31.046 [unknown] [unknown] localhost 140719588914944 0 [BACKEND] WARNING: macAddr is 64022/1040773698, sysidentifier is 4195761672/4064474332, randomNum is 2212623580 +... ... +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 /opt/software/openGauss/data/slave --single_node +or + gs_ctl start -D /opt/software/openGauss/data/slave -Z single_node -l logfile + +[config datanode.] +remote_read_mode = non_authentication +host all all 192.168.0.100/32 trust +[start primary datanode.] +[2021-04-01 10:16:53.293][1997][][gs_ctl]: gs_ctl started,datadir is /opt/software/openGauss/data/master +[2021-04-01 10:16:53.400][1997][][gs_ctl]: waiting for server to start... +...... +[2021-04-01 10:17:10.092][2063][datanode2][gs_ctl]: done +[2021-04-01 10:17:10.092][2063][datanode2][gs_ctl]: server started (/opt/software/openGauss/data/slave) +[2021-04-01 10:17:10.092][2063][datanode2][gs_ctl]: fopen build pid file "/opt/software/openGauss/data/slave/gs_build.pid" success +[2021-04-01 10:17:10.092][2063][datanode2][gs_ctl]: fprintf build pid file "/opt/software/openGauss/data/slave/gs_build.pid" success +[2021-04-01 10:17:10.095][2063][datanode2][gs_ctl]: fsync build pid file "/opt/software/openGauss/data/slave/gs_build.pid" success +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: + primary: gs_ctl start|stop|restart -D $GAUSSHOME/data/master -M primary + standby: gs_ctl start|stop|restart -D $GAUSSHOME/data/slave -M standby +``` + +**-\> 数据库检查** + +``` +[omm@db1 ~]$ echo "PATH=/opt/software/openGauss/bin:\$PATH" >> /home/omm/.bash_profile ## 配置PATH +[omm@db1 ~]$ source ~/.bash_profile +[omm@db1 master]$ gsql -d postgres -p 26000 -r +postgres=# \l + List of databases + Name | Owner | Encoding | Collate | Ctype | Access privileges +-----------+-------+----------+-------------+-------------+------------------- + finance | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | + postgres | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | + school | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | + template0 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm + + | | | | | omm=CTc/omm + template1 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm + + | | | | | omm=CTc/omm +``` + +**-\> 主备状态检查** + +``` +[omm@db1 master]$ gs_ctl query -D /opt/software/openGauss/data/master +[2021-04-01 10:32:43.785][2239][][gs_ctl]: gs_ctl query ,datadir is /opt/software/openGauss/data/master + HA state: + local_role : Primary + static_connections : 1 + db_state : Normal + detail_information : Normal + + Senders info: + sender_pid : 2151 + local_role : Primary + peer_role : Standby + peer_state : Normal + state : Streaming + sender_sent_location : 0/403B850 + sender_write_location : 0/403B850 + sender_flush_location : 0/403B850 + sender_replay_location : 0/403B850 + receiver_received_location : 0/403B850 + receiver_write_location : 0/403B850 + receiver_flush_location : 0/403B850 + receiver_replay_location : 0/403B850 + sync_percent : 100% + sync_state : Sync + sync_priority : 1 + sync_most_available : Off + channel : 192.168.0.100:26001-->192.168.0.100:37014 + + Receiver info: +No information +``` +