本学期数据库这门实验要求部署openGauss到虚拟机里面,Linux系统的版本要求是CentOS,在站上找了很多教程参考,最终完成实验报告,其中包含了详细安装过程以及一些自己踩过的坑和相应的解决办法,希望对有需要的伙伴有一些帮助吧!
一、配置环境
1. 操作系统:CentOS 7.6(Linux)
2. 数据库管理软件(含版本号):openGauss - 6.0.0 RC1 – CentOS
3. 其他工具:Python 3.6.15
二、配置过程内容
(针对上述4项实验内容逐一详述实验过程)
2.1 部署CentOS – 7.6 操作系统
最初部署的是CentOS - 7.9(参照大多数教程),但在阅读openGauss6.0 配置文章时发现其对CentOS – 7.6适配,并且在中断设置网络时无法联网等原因,重装了CentOS -7.6虚拟机。
2.1.1 安装虚拟机: Vmware Workstation Pro 17
由于我的电脑上之前就已经下好虚拟机VWP 17,因此略过此步;
Vmware Workstation Pro 17下载网址:https://www.vmware.com/go/try-workstation
下载步骤较为简单,注意自定义设置到指定位置,其他均“下一步”即可。
2.1.2 下载 CentOS – 7.6 镜像资源
下载地址:
https://mirrors.aliyun.com/centos-vault/centos/7.6.1810/isos/x86_64/#:~:text=centos-vau
我选择的是阿里云的镜像资源,选择CeentOS -7- x86_64-DVD-1810.iso,由于文件较大导致下载速度较慢,推荐用迅雷下载:
注意指定下载的文件地址,方便在部署的时候找到;
2.1.3 部署CentOS – 7.6 到VMP
1. 点击“创建新的虚拟机”
(由于是我完成部署之后写的报告,因此虚拟机中已经建好CentOS-7.6,这里作为巩固一遍步骤):
2. 选择“典型”配置(自动化安装)
这里有两种安装方式,根据自己需要,为方便,我选择的是“典型”,可以自动化安装,而无需自己进行一些设置(如果有特殊需求的话可以自定义):
3. 定位CentOS7.6镜像文件地址
系统默认“稍后安装系统”,这里就可以先设置,点击“浏览”定位到CentOS镜像文件的地址,点击下一步:
4. 设置安装信息
设置如下信息,密码将是我们登录操作系统的密码,填写完成之后点击下一步:
5. 命名虚拟机
填写虚拟机名称,通过浏览指定虚拟机安装的位置或者使用默认地址,点击下一步:
6. 指定磁盘大小
通常为20GB或者40GB都可,这里选择“将虚拟磁盘拆分成多个文件”;之后点击“自定义硬件”,完成虚拟机的一些配置。
7 .自定义硬件
7.1 设置虚拟机的内存
(通常为2~4GB即够用),但这里需要设置为4GB,实验过程中因为这里设置为2GB导致部署openGauss时出现内存共享问题,调试了很久才发现:
7.2 设置内核数量
可以查看自己电脑的内核数量,我的电脑上6个内核,分配2个内核到虚拟机上:
此处已经连接到刚才指定的CentOS 文件:
7.3 设置网络适配为NAT模式
该模式连接网络较为方便:
8. 开始创建虚拟机
点击关闭,点击完成,开始创建虚拟机,黑屏下数据加载后出现如下界面,由于选择典型模式,开始自动化安装,等待15~20分钟完成安装!
9. 完成虚拟机安装
安装成功后为如下界面,如下是我们刚才创建的一个新的CentOS7.6操作系统,H是刚才创建的用户:
输入密码登录操作系统:
如下即创建虚拟机完成!
10. 网络配置
10.1 虚拟网络编辑器
10.2 查看网关
按照1-2-3显示以下界面,记住网关IP
10.3 配置静态IP
(1) 使用命令:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
(/etc/sysconfig/network-scripts/ifcfg-ens33 是一个配置文件,用于在基于 Red Hat 的 Linux 系统(如 CentOS 或 Fedora)中配置网络接口。具体来说,这个文件定义了名为 ens33 的网络接口的设置。)
将BOOTPROTO(接口的启动协议)修改为:static
在文件末尾添加如下四行内容:
IPADDR:192.168.188.x(前3位与网关相同,后一位自行指定0~255)
GATEWAY:网关,也就是刚才虚拟网络编辑器段查到的内容
NETMASK:掩码,255.255.255.0
(2) 域名解析地址:这里设置为与网关相同即可
——设置DNS为网关:之前我将DNS1设置为8.8.8.8/114.114.114.144/8.8.4.4等,在ping 8.8.8.8或者其他网络数值地址都可以,但是ping baidu.com总是出错,之后才发现这是域名解析地址不对的原因,但是ping 网关是可以的,因此直接将网关设置为DNS即可,问题得到解决。
编辑完成后,按“ESC”键,输入“:wq”退出修改界面。
10.4 重启网络管理工具
重启网络管理工具:
systemctl restart network
查看当前IP:ifconfig
测试一下,配置成功!
2.2 远程连接Linux系统 —— FinalShell
我们可以通过第三方软件,FInalShell,远程连接到Linux操作系统之上,并通过FinalShell去操作Linux系统,带来很大的方便。
2.2.1 下载FinallShell 安装包
下载地址:
FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本4.5.9,更新日期2024.9.26 - FinalShell官网
根据系统版本选择相应的版本,这里我们选择Linux X64:
安装以后,FinalShell.exe,可能会出现安装,按“下一步”直到完成即可,操作较为简单。
2.2.1 远程连接设置
1. 打开FinalShell如下界面(123)
点击1处的文件夹,跳出连接管理器页面,点击2处白色加号文件夹,3处选择Linux连接:
2. 获取IP地址
打开CentOS终端,输入命令ifconfig,获取IP地址(主机)
3. 新建SSH连接
填写信息,名称自定义,主机即刚才查找的IP地址,端口号默认22,用户名和密码即CentOS操作系统的之前设置的密码,点击确定:
4. 连接成功
双击刚才创建的SSH连接CentOS System_y,则进入终端界面,连接主机成功!
2.3 部署OpenGauss_6.0.0-RC1
2.3.1 下载 OpenGauss_6.0.0-RC1安装包
下载地址:openGauss软件 | openGauss下载 | openGauss软件包 | openGauss社区官网
注意选择架构x86_64和操作系统CentOS 7.6 ,选择(根据需要)企业版下载,一定注意下载适配的安装包,否则在openGauss配置过程中会出现本本不兼容的报错!(教训)
将其下载到指定位置:
2.3.2 部署 openGauss 到 CentOS 操作系统
完成上述步骤之后,开始在终端通过命令行部署:
由于在终端进行的部署,因此FinallShell关闭后命令历史丢失无法展示步骤,2.1~2.2操作较为简单,openGauss操作较为麻烦复杂。
openGauss的部署我参照CSDN上的这篇博客:
文章地址:
博客内容非常详细,这里我重新部署了一次,我将描述用到的指令和遇到的问题,以及相应的解决方案。
1. 部署前准备
1.1 关闭安全服务
命令:
vim /etc/selinux/config
修改文件中的“SELINUX”值为“disabled”:
1.2 关闭防火墙
查看防火墙状态:
systemctl status firewalld
如果防火墙active,则关闭防火墙:
systemctl stop firewalld.service
·临时关闭SELinux:setenfore 0;这条命令会将SELinux的运行模式设置为“宽松”(Permissive),在此模式下,SELinux 不会阻止访问,但会记录潜在的违规行为。
查看SELinux状态:getenforce
// 拓展:
·若想永久更改 SELinux 的状态,需要修改 /etc/selinux/config 文件,将 SELINUX 变量更改为 disabled 或 permissive,然后重启系统reboot。
1.3 host配置
命令:
cat /etc/hosts
·/etc/hosts 文件用于将主机名映射到 IP 地址
1.4 安装依赖包
(1) 创建挂载目录:mkdir /cdrom
(2) 挂载目录:mount -t iso9660 -o ro /dev/cdrom /cdrom
挂在目录时报错如上,原因是没有连接到镜像文件,解决方法:找到VWP的虚拟机设置,找到IDE,连接选择使用ISO镜像文件定位到下载的操作系统.iso文件地址,如果设备是启动状态就还要勾选已连接,点击确定:
并且还需检查虚拟机右下角连接情况,我的问题就是没有连接,点击后连接成功
检查光驱设备:dmesg | grep sr0
可以看出系统检测到.的iso文件:
(3) 备份现有YUM配置文件
(4) 配置yum文件:vi local.repo
·添加仓库配置:
[base-local] 是仓库 ID。
name 是仓库的描述。
baseurl 指定了仓库的位置,这里是本地光盘的挂载点。
enabled=1 表示该仓库处于启用状态。
gpgcheck=0 表示不进行 GPG 签名检查(可以根据需要进行调整)。
(5) 测试新配置
·清除 YUM 缓存:yum clean all
·检查仓库是否正确配置:yum repolist
·重载YUM:yum makecache
(6) 安装依赖:
命令1:yum -y install libaio-devel flex bison ncurses-devel \
继续2:glibc-devel patch redhat-lsb-core readline-devel openssl-devel sqlite-devel libnsl
1.4 安装Python 3
(1) 使用 wget 命令从指定的 URL 下载 Python-3.6.15.tgz 文件到根目录:
命令:wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz
解压python安装包:tar -zxvf Python-3.6.15.tgz
(2) 进入解压后的 Python 源代码目录,准备进行配置和编译
·解压:cd Python-3.6.15/
·配置:./configure --prefix=/usr/local/python3 --enable-shared
//查询获知:
./configure 是一个脚本,检查系统环境,确保所有依赖项可用,并生成适合你系统的 Makefile。
--prefix=/usr/local/python3 指定安装目录,将 Python 安装到 /usr/local/python3。
--enable-shared 使得编译时生成共享库,这在一些应用程序需要动态链接时非常有用
·编译:make (编译完成后,会生成可执行文件和其他相关文件,时间较长)
·安装:makse install (将编译好的文件复制到在配置步骤中指定的安装目录(即 /usr/local/python3))
(3) 安装gcc:yum install gcc
(4) 设置OS的python的软连接
·ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
·ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
(5) 链接
验证Python版本:python -V ;
查找动态库文件:find / -name libpython3.6m.so.1.0
复制动态库文件:cp /root/Python-3.6.15/libpython3.6m.so.1.0/usr/lib64/
验证 Python 是否正常运行:python
2. 安装openGauss
2.1 前提准备
在安装 openGauss 数据库之前,确保:
·已创建用户组和普通用户
·服务器和网络正常运行
·普通用户需对数据库包的解压路径和安装路径具备读、写和执行权限
·安装路径必须为空
·普通用户还需对下载的 openGauss 压缩包有执行权限。最后,检查指定的端口是否被占用,如被占用,需更改端口或停止相关进程。
2.2 上传安装包到服务器
(1) 创建服务器目录:mkdir -p /opt/openGauss
创建openGausee的目录:mkdir -p /openGauss
(2) 在本地终端将安装包上传:
命令: scp path 用户名@主机IP:目标路径
这里直接上传到建立的文件夹会出错,因为没有足够的权限,因此可以先上传到根目录下,再移动到指定文件夹即可:
·-p: 表示“父目录创建”,即如果指定的路径中的某些目录不存在,mkdir 会自动创建这些缺失的父目录,而不会报错。这样可以确保整个路径结构能够顺利创建
2.3 解压安装包
命令:
(1) mv /home/h/openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz /opt/openGauss/
(2) chmod 755 -R /opt/openGauss
(3) cd /opt/openGauss
·解压:tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz
(1) tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz
(2) ll
2.3 配置xml文件
安装p[enGauss前需要创建cluster_config.xml文件。
cluster_config.xml文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。
·编辑配置文件:vim /opt/openGauss/db_config.xml
在文件中添加如下内容,注意将value改成自己的主机IP
2.4 用户和组创建
·创建用户组:groupadd dbgroup
·创建用户 omm 并指定其所属用户组为 dbgroup:useradd -g dbgroup omm
·设置用户 omm 的密码:passwd omm
·接着根据提示输入密码即可,要求不低于8长度字符。
·确认用户和组的创建:groups om
2.5 初始化安装
(1) 设置目录权限和所有权:
·递归地修改权限:chmod -R 775 /opt/openGauss
·修改该目录及其子目录和文件的所有者:chown omm:dbgroup /opt/openGauss -R
·进入脚本目录:cd /opt/openGauss/script
·设置环境变量(指定了共享库的查找路径,这样系统在运行时能够找到所需的库文件):
export LD_LIBRARY_PATH=/opt/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH
·运行预安装脚本 gs_preinstall,用于准备集群安装:
./gs_preinstall -U omm -G dbgroup -X /opt/openGauss/db_config.xml
(2)过程中报错:python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory,即系统无法找到所需的 Python 共享库,解决:
·确认python是否存在:python3 – version
·找到python3文件所在位置:find / -name "libpython3.6m.so.1.0" 2>/dev/null
·配置环境变量:export LD_LIBRARY_PATH=/usr/local/python3/lib:$LD_LIBRARY_PATH
·libpython3.6m.so.1.0复制到/usr/lib64/目录下:
cp /usr/local/python3/lib/libpython3.6m.so.1.0 /usr/lib64
(3) 集群:/opt/openGauss/script/gs_checkos -i A -h centos79 –detail
报错,经查询是在尝试将文件从本地复制到远程主机 centos79 时失败,lost connection 通常意味着网络连接问题或者SSH配置问题。
解决办法:echo "192.168.x.x centos79" >> /etc/hosts
重启网络:systemctl restart network
2.5 最终安装
·切换到omm用户:su – omm
·安装并初始化openGauss数据库:gs_install -X /opt/openGauss/db_config.xml
·设置密码
3. 安装验证
(1) 在omm用户状态下,检查 openGauss 数据库的状态:gs_om -t status
运行该命令后,系统会输出当前数据库集群的状态信息,包括:cluster_state:如果显示为 "Normal",表示数据库处于正常运行状态,可以正常使用。(之前因为内存开的不都改这里就显示的是Unavailable)
(2) 查看详细信息:gs_om -t status –detail
2.6 数据库登录测试
(1) 数据库登录:gsql -d postgres -p 15400
我们通过指定数据库(-d postgres)和端口(-p 15400)成功连接到了 openGauss 数据库,提示符 openGauss=# 表示我们已经进入数据库的交互式命令行界面
·查看可用的元命令:\? (将显示所有可用的元命令及其用途)
·列出所有数据库:\l
·查看当前用户:\du
·列出所有表:\dt
·创建表employees:Creat TABLE employees{……}
·插入测试数据:INSERT INTO employees ……
·查询数据:SELECT * FROM employees;
(2) 数据库登录和关闭:
·gs_om -t stop
·gs_om -t start
三、配置总结
本次安装配置,主要是以下几个问题花费较长时间并得以解决:
3.1 静态网络设置
3.1.1 配置Linux固定IP地址的原因
• 当我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的;
• DHCP:动态获取IP地址,即每次重启设备后都会回去一次,可能导致IP地址频繁变更;
·reson (1):办公电脑IP地址变化无所谓,但是我们要远程连接到Linux系统,如果IP地址经常变化我们就要频繁修改适配,很麻烦;
·reson(2):在我们配置了虚拟机IP和主机名的映射之后,如果IP频繁更改,我们也需要频繁更新映射关系;
3.1.2 域名解析出错及解决方法
测试网络时:ping 114.114.114.114 、ping 8.8.8.8和ping 192.168.188.2(网关)都能够通,但是ping baidu.com总是报错:ping: www.baidu.com: 未知的名称或服务,Linux系统里的浏览器也不能使用。
1. 检查防火墙,确认防火墙关闭;
2. 一直以为是系统延迟,但当和ping google.com不能通的时候, google.com 的公共 DNS 服务器地址之一是 8.8.8.8,因此是域名解析的问题 —— DNS设置出错了!
3. 因此将/etc/sysconfig/network-scripts/ifcfg-ens33 中的DNS1设置为”114.114.114.114”,同时, /etc/resolv.conf中的nameserver也设置同样地址,还是不能够,之后换成8.8.8.8/8.8.4.4都无法连接网络,显示无法连接到 114.114.114.114,表明 DNS 服务器可能无法访问或者是我的系统无法访问外部网络;
(1) 但是检查SELinux之后:setenforce 0 将其设置为宽松模式,问题解决!
(2) 在之后重新安装系统的时候,既然网关能够ping 通,将其设置为GATEWAY,同样可以解决!并且在更改配置后,需要重启网络服务:systemctl restart network使之生效,操作更加简便!
3.2 openGauss安装包的传输
3.2.1 无法在Linux通过网络下载安装包
我们下载的openGauss应该安装到CentOS系统上,因为它是为Linux环境设计的数据库操作系统,尽管CentOS上连接到了网络,但是通过firefox搜索openGauss网页出错,因此想像pthon安装包一样通过命令行:
wget centos-vault-centos-7.6.1810-isos-x86_64安装包下载_开源镜像站-阿里云
下载,但是报错:找不到该网络地址。
3.2.2 本地上传文件步骤
经查询相关资料,可以在本地上传到Linux服务器:
1. 打开终端:打开Windows的命令提示符或PowShell
2. 使用scp命令:scp path\to\your\file username@your_linux_ip:/usr/local/
path\to\your\file: 替换为文件路径
username :替换为 Linux 用户名
your_linux_ip :替换为 Linux 服务器的 IP 地址
3. 在提示时输入Linux用户密码
3.3 虚拟机内存分配不足
(本问题是第一安装过程中产生的,但是由于命令历史删除了,上面的演示是我进行第二次的虚拟机安装,规避掉了本问题,因此只在这里做说明)
//下面是执行gs_ctl status -D /openGauss/data/dn之后的部分记录截图:
经查询,获知启动 openGauss 时遇到了共享内存的问题,在第一次安装时设置虚拟机的内存大小为2G,而openGauss需要4GB的大小。
解决方法:检查/etc/sysctl.conf 或使用 sysctl 命令调整共享内存参数;
(1) sudo nano /etc/sysctl.conf
在文件中添加或修改以下参数(根据需要调整数值):
kernel.shmmax = 4294967296 //最大共享内存段大小(4GB)
kernel.shmall = 1048576 //共享内存总量(单位:页,通常为4096字节)
(2) 应用更改:sysctl -p
之后问题得到解决!
3.4 YUM的配置
在查看教程的时候不懂得YUM的配置,经查阅信息得到解决办法:
1. 使用 vi 或任何文本编辑器创建或编辑 local.repo 文件:
vi /etc/yum.repos.d/local.repo
2. 添加仓库配置(编辑内容):
[base-local]
name=CentOS7-local
baseurl=file:///cdrom
enabled=1
gpgcheck=0
[base-local] 是仓库的 ID;
name=CentOS7-local 是仓库的描述;
baseurl=file:///cdrom 指定了本地仓库的路径(假设你有一个挂载在 /cdrom 的光盘或文件系统);
enabled=1 表示该仓库是启用状态;
gpgcheck=0 表示不进行 GPG 签名检查(如果你信任该源,可以使用此设置;否则建议启用 GPG 检查)
3. 保存退出后,进行测试配置:
(1) yum clean all
(2) yum repolist
个人认为opGauss的安装还是非常繁杂的,某些地方出错之后就会需要很多步骤来弥补。第一次安装试错,第二次安装巩固,两次安装还是带给我一定的收获,对操作系统的一些架构有进一步的了解,以及能够较为熟练地使用一些简单的命令行,也学到一些新的命令行和快捷键等,以及对于文件在操作系统和本地之间的传送(以前一直用的是ctrl+c/v),同时对于本门课程数据库的一些简单指令有了初步了解,希望在之后的学习中能够更好地掌握数据库地命令,充分利用这个工具辅助自己的学习!
本文参考了其他博主文章参考以及自身遇到的问题的一些记录,若有不足敬请指正!