作者:Jackey WU
一、 安装环境
1、 OpenGauss版本<o:p></o:p>
openGauss-2.1.0-openEuler-64bit<o:p></o:p>
下载地址:https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.1/x86/openGauss-2.1.0-openEuler-64bit.tar.bz2
2、
虚拟机信息
虚拟机软件:VMware Workstation 16 Player
虚拟机软件版本:16.1.2 build-17966106
虚拟机配置信息:内存8GB、处理器1核、硬盘40GB
3、 操作系统信息
openEuler-20.03-LTS
二、
安装详细步骤
Ps:大部分都没有截图,因为安装OpenGauss已经是很久以前的事情了,下面有的截图也只是后面补截取的。
1、 虚拟机准备
本次实验我选择了VMware Workstation 16 Player软件搭建虚拟机,在虚拟机器的准备中,和一般部署虚拟机的操作没有什么区别,资源设定如下:
内存 8GB
硬盘 40GB处理器内核数量1个
2、 安装openEuler这里也就是下载好openeuler的完整镜像之后在VM中正常安装即可,安装过程中是有详细的引导的,需要自行操作基本只有分区设置(自动分区)和地区设置,以及用户和密码的设置。安装完成后以预设用户登录即可。
需要说明的是,我选择了使用无图形界面的openEuler,并通过SSH连接的方式在MobaXterm软件中对服务器(也就是部署好openEuler的虚拟机)进行操作。 系统环境配置 ① 关闭防火墙
[root@node1 ~]# systemctl disable firewalld.service
[root@node1 ~]# systemctl stop firewalld.service
② 关闭selinux
[root@node1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
③ 设置字符集
[root@node1 ~]#cat >> /etc/profile <<EOF
export LANG=en_US.UTF-8
EOF
④ 修改地区和时区
[root@node1 ~]# cp /etc/share/zoneinfo/Asia/Shanghai /etc/localtime
⑤ 关闭交换内存
[root@node1 ~]# swapoff -a
⑥ 设置网卡MTU值
推荐值是8192虚拟机环境是1500可以不修改
[root@node1 ~]# ifconfig | grep ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
⑦ 设置root为远程用户
去掉sshd_config文件(这个文件是关于ssh链接的配置)中PermitRootLogin的注释符#并把no改为yes
[root@node1 ~]# vim /etc/ssh/sshd_config
PermitRootLogin yes
⑧ 操作系统参数设置
[root@node1 ~]# cat >> /etc/sysctl.conf <<EOF
net.ipv4.tcp_retrises1=5
net.ipv4.tcp_syn_retries=5
net.sctp.path_max_retrans=10
net.sctp.max_init_retransmits=10
EOF
[root@node1 ~]# echo "* soft nofile 1000000" >> /etc/security/limits.conf
[root@node1 ~]# echo "* hard nofile 1000000" >> /etc/security/limits.conf
[root@node1 ~]# echo "* soft nprc 60000" >> /etc/security/limits.d/90-nproc.conf
⑨ 修改主机名
[root@node1 ~]# echo "node1" > /etc/hostname
[root@node1 ~]# echo "192.168.111.132 node1" >>/etc/hosts
⑩ 重启
[root@node1 ~]# reboot
4、 安装OpenGauss
① 创建配置文件
[root@node1 ~]# vim /opt/clusterconfig.xml
以下为预先编辑好的配置文件内容,我通过WinSCP直接进行了修改和覆盖(最开始做实验的时候是XShell配合着WinSCP用的)。
② 下载安装包(我下的是1.0.0 版本的)
下载地址
https://opengauss.obs.cn-south-1.myhuaweicloud.com/2.0.1/x86/openGauss-2.1.0-openEuler-64bit.tar.bz2
下载完之后提前传到虚拟机中并记录好路径。
③ 创建用户组和目录
[root@node1 ~]# groupadd dbgrp
[root@node1 ~]# useradd -g dbgrp -d /home/omm -m -s /bin/bash omm
[root@node1 ~]# echo "omm" | passwd --stdin omm
[root@node1 ~]# mkdir -p /opt/software/openGauss
[root@node1 ~]# chmod 755 -R /opt/software
[root@node1 ~]# chown -R omm:dbgrp /opt/software/openGauss
④ 解压安装包到指定目录
[root@node1 ~]# tar -xvf /mnt/hgfs/share/ openGauss-2.1.0-openEuler-64bit.tar.bz2 /opt/software/openGauss
⑤ 设置lib库
[root@node1 ~]# vim /etc/profile
export LD_LIBRARY_PATH=/opt/software/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH
⑥ 预安装
[root@node1 ~]# cd /opt/software/script
[root@node1 ~]# python3 gs_preinstall -U omm -G dbgrp -X /opt/clusterconfig.xml
之后初始化过程中需要进行交互,具体而言:
遇到[yes/no],就选yes;
让输入root密码,就输入root密码;
让输入omm密码,就输入omm密码。
Ps:如果在预安装失败 就执行 gs_checkos -i A -h node1 --detail 命令 查看失败原因
⑦ 安装openGauss
[root@node1 ~]# su - omm
[omm@node1 ~]# gs_install -X /opt/clusterconfig.xml
执行的时候需要设置初始密码,复杂度要求和openEuler系统一样比较高,要至少三种字符和最少8个字符。
⑧ 重启数据库
[root@node1 ~]# su - omm
[omm@node1 ~]# gs_ctl start -D "/opt/huawei/install/data/db1"
⑨ 登录数据库
[root@node1 ~]# gsql -d postgres -p 26000
5、 基本数据库操作验证
① 启停数据库
[root@node1 ~]#gs_ctl start -D /opt/huawei/install/data/db1/
[root@node1 ~]#gs_ctl stop -D /opt/huawei/install/data/db1/
② 切换omm系统用户登录数据库
[root@node1 ~]#gs_guc set -N all -I all -h "host all jack 192.168.111.132/32 sha256"[root@node1 ~]#gsql -d postgres -p 26000
③ 创建用户并赋予用户管理权限 i. 创建用户jackey 并设置密码为123321jackey
[root@node1 ~]#create user jackey identified by '123321jackey.';
ii. 默认用户没有创建数据库表权限需要修改其权限
[root@node1 ~]#ALTER ROLE gaussadmin SYSADMIN;
6、 通过JDBC执行SQL
① JDBC包与驱动类在linux服务器端源代码目录下执行build.sh,获得驱动jar包postgresql.jar,包位置在源代码目录下。从发布包中获取,包名为openGauss-x.x.x-操作系统版本号-64bit-Jdbc.tar.gz。驱动包与PostgreSQL保持兼容,其中类名、类结构与PostgreSQL驱动完全一致,曾经运行于PostgreSQL的应用程序可以直接移植到当前系统使用。就驱动类而言,在创建数据库连接之前,需要加载数据库驱动类“org.postgresql.Driver”。
②
加载驱动在创建数据库连接之前,需要先加载数据库驱动程序。加载驱动有两种方法:
i.
在代码中创建连接之前任意位置隐含装载
:Class.forName(“org.postgresql.Driver”);
ii.
在JVM启动时参数传递:
java -Djdbc.drivers=org.postgresql.Driver jdbctest
③ 连接数据库
在创建数据库连接之后,才能使用它来执行SQL语句操作数据。
JDBC提供了三个方法,用于创建数据库连接。
i.
DriverManager.getConnection(String
url);
ii.
DriverManager.getConnection(String
url, Properties info);
iii.
DriverManager.getConnection(String
url, String user, String password);
④
示例:基于openGauss提供的JDBC接口连接数据库。
三、 遇到的问题和解决办法 1、通过SSH连接虚拟机进行操作时提示access denied无法成功连接
这个问题很早就出现过,我最开始考虑的自然是密码输错了,后来查阅资料发现是前面提到过的sshd_config文件的配置有问题,主要是这几个点:UsePAM yes #需要打开
PasswordAuthentication yes #需要打开
ChallengeResponseAuthentication no #需要打开
在修改之后自然也就得到了解决,能够顺利进行下去。
但是值得一说的是,最近写报告的时候想着要截图放报告里,结果发现又连接不上了,还是同样的SSH访问提示access denied拒绝访问,我首先就检查了/etc/ssh/sshd_config文件,发现UsePAM yes 变成了UsePAM no,据网上的说法是和修改过系统密码有关,总之我是把no又改回了yes,但是这次却无法解决问题,直到目前我也无法重新通过SSH连上虚拟机。
2、用户组部署出错如前面所说,数据库安装完成后,默认生成名称为postgres的数据库。第一次连接数据库时,通过gsql -d postgres -p
26000命令(其中postgres为需要连接的数据库名称,26000为数据库主节点的端口号,即XML配置文件中的dataPortBase的值)就可以连接到此数据库。如果成功连接则会显示类似如下的信息。
gsql ((openGauss x.x.x build 290d125f) compiled at 2021-03-08 02:59:43 commit 2143 last mr 131
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
但我当时多次尝试后其实并没有成功,所以我参考了opengauss松鼠会的技术人员撰写的安装脚本,对照着修改了用户组部署那一部分的内容,最后问题得到了解决,能够正常安装完成并得到上述信息验证。
四、References & Thanks
https://developer.huaweicloud.com/hero/forum.php?mod=viewthread&tid=121436;
https://opengauss.org/zh/docs/2.1.0/docs/installation/installation.html.