当前位置: 首页 > news >正文

从零到一:在openEuler虚拟环境中高效部署openGauss数据库实战

1. 环境准备:虚拟机与系统镜像的获取

咱们今天要干一件挺酷的事儿,就是在你自己的电脑上,完全从零开始,搭建一个国产的 openGauss 数据库环境。整个过程就像搭乐高,一步步来,最终你会得到一个功能完整、可以随意折腾的数据库沙盒。这个环境特别适合用来学习数据库原理、测试应用,或者做一些开发实验,完全不用担心搞坏生产环境。

首先,你需要准备两样核心“原材料”:虚拟化软件和操作系统镜像。虚拟化软件我强烈推荐VirtualBox,它来自甲骨文公司,完全免费、开源,而且对个人用户非常友好,性能也足够稳定。你直接去它的官网下载 Windows 版本就行,安装过程就是一路“下一步”,没什么坑,记得安装路径别选C盘,选个空间大的盘符,比如 D:\VirtualBox。

另一个关键材料是操作系统镜像。我们这次的主角是openEuler,这是一个由华为发起、社区共同运营的国产开源 Linux 发行版,特别为云计算和边缘计算优化过,和 openGauss 数据库是“黄金搭档”。我们要下载的是它的长期支持版(LTS),具体是openEuler 22.03 LTS SP3。这个版本经过了充分测试,非常稳定。获取镜像最靠谱的地方是华为的开源镜像站,速度很快。你打开浏览器,找到对应 x86_64 架构的 DVD 镜像文件(文件名类似openEuler-22.03-LTS-SP3-x86_64-dvd.iso),下载下来。这个文件大概有4-5个GB,取决于你的网速,可能需要一点时间。下载完成后,也建议你把它放在一个容易找到的目录,比如D:\ISO

这里有个小经验分享给你:在开始动手之前,最好确保你的电脑(宿主机)有足够的资源。我建议至少给虚拟机分配2核CPU、4GB内存和40GB硬盘空间。虽然教程里可能写的是最低配置,但稍微多给一点资源,后续整个系统的运行流畅度会好很多,编译安装软件时也能避免因为内存不足导致的奇怪错误。我自己第一次尝试时,只给了2GB内存,在初始化数据库那一步就卡了很久,后来加到4GB就顺畅多了。

2. 创建并配置 openEuler 虚拟机

有了 VirtualBox 和 openEuler 镜像,我们就可以开始“造房子”了。打开 VirtualBox,点击“新建”。这里给虚拟机起个名字很重要,我建议就叫openEuler_DB,这样一目了然。类型选择Linux,版本选择Other Linux (64-bit)。内存大小设置为4096 MB(4GB),处理器数量给2个。在创建虚拟硬盘的步骤,选择“现在创建虚拟硬盘”,类型用默认的 VDI(VirtualBox磁盘映像)就行,硬盘分配方式我推荐选择“动态分配”,这样它一开始不会立刻占用你设定的全部空间,而是随着使用慢慢增长,比较节省宿主机磁盘。大小可以设置为40.00 GB,这对于安装系统和数据库来说绰绰有余了。

创建好虚拟机后,先别急着启动,关键的配置都在这里。选中刚创建的虚拟机,点击“设置”。首先在“存储”选项里,找到“控制器: IDE”下面的光驱图标,点击右侧的光盘小图标,选择“选择虚拟盘文件”,然后找到你刚才下载的 openEuler 的 ISO 镜像文件。这一步相当于把安装光盘插入了虚拟机的光驱。

接下来是网络配置,这是第一个容易踩坑的地方。VirtualBox 默认只有一块网卡(NAT模式),这能让虚拟机访问外网,但宿主机无法直接访问虚拟机,不利于我们后续用 MobaXterm 进行远程管理。所以我们需要配置两块网卡。点击“网络”选项,启用“网卡1”,连接方式选择“仅主机(Host-Only)网络”。这个模式会在你的电脑上创建一个虚拟的私有网络,宿主机和虚拟机处于同一个局域网内,可以互相通信,非常适合管理。然后,点击“网卡2”标签页,勾选“启用网络连接”,连接方式选择“网络地址转换(NAT)”。这块网卡就是给虚拟机提供上网能力的。这样配置后,虚拟机既能通过网卡2上网下载软件包,又能通过网卡1被你的宿主机稳定访问。

还有一个细节在“系统”设置里。确保“主板”选项卡中的“芯片组”是PIIX3(兼容性好),并且勾选“启用 EFI(仅针对某些操作系统)”这个选项不要勾选,因为我们的安装方式不需要它。在“处理器”选项卡,可以确认一下CPU数量是2。在“显示”选项卡,把“显存大小”拉到128 MB,这样图形界面会更流畅。全部检查无误后,点击“确定”保存设置。

3. 安装 openEuler 操作系统

现在,点击 VirtualBox 主界面的“启动”,虚拟机会从我们加载的ISO镜像启动,进入 openEuler 的图形化安装界面。第一个界面直接按回车进入。接下来会有一个硬件自检界面,我们按Esc键跳过即可,这个检查不是必须的。

语言选择“中文 - 简体中文”,点击继续。安装位置(即磁盘分区)是重点。点击“安装目的地”,进入后选择“自定义”,然后点击“完成”。在分区方案页面,务必在下拉菜单中选择“标准分区”,这是最通用、最不容易出错的方式。然后点击界面上的“点击这里自动创建它们”,系统会自动为你创建/boot/(根分区)和swap分区,对于我们的实验环境来说完全足够。点击“完成”,在弹出的更改摘要中点击“接受更改”。

接下来是网络和主机名配置,这是第二个关键点,配错了后面SSH就连不上了。点击“网络和主机名”,你会看到两个网络连接,对应我们之前设置的两块网卡(通常叫enp0s3enp0s8)。首先,把两个网卡右上角的开关都从“关闭”拨到“打开”状态。然后,点击第一个网卡(通常是enp0s3,即Host-Only网卡)的“配置”按钮。在“常规”选项卡中,务必勾选“当可用时自动连接到这个网络”,然后保存。接着,在主机名输入框里,输入一个你喜欢的名字,比如db1,然后点击“应用”。对第二个网卡(enp0s8,NAT网卡)重复同样的操作:打开开关,进入配置勾选自动连接,主机名保持和第一个网卡一致(db1),保存。这样做的目的是确保系统启动时,两块网卡都能自动获取IP地址并启用。

然后是软件选择。点击“软件选择”,默认是最小安装。为了后续部署数据库的便利,我们最好多装一些工具。选择“带 GUI 的服务器”或者“虚拟化主机”作为基础环境,然后在右侧的附加选项中,确保勾选上“开发工具”、“系统工具”、“安全性工具”和“Linux的远程管理”。这些工具包包含了编译环境、系统管理命令和SSH服务器等,能省去很多后续手动安装依赖的麻烦。

最后设置 root 用户密码。点击“Root 密码”,设置一个强密码,比如OpenGauss@123456(记住它,后面会频繁用到)。密码设置完成后,就可以点击“开始安装”了。安装过程大概需要10-20分钟,取决于你的电脑性能。安装完成后,点击“重启系统”。

重启后,虚拟机可能会再次尝试从光盘启动。这时你需要关闭虚拟机窗口,在 VirtualBox 管理器中,选中你的虚拟机,点击“设置”,在“系统”选项卡里调整“启动顺序”,把“硬盘”移到最上面,确保它是第一启动项,然后点击“确定”。再次启动虚拟机,这次就会从硬盘上的 openEuler 系统启动了。看到登录提示符后,输入用户名root和你刚才设置的密码,就能进入系统了。

4. 系统基础配置与远程连接

登录进 openEuler 的字符界面后,我们首先验证一下网络配置是否成功。输入命令ip addr或者ifconfig(如果没安装net-tools,可以用ip addr)。你应该能看到两个网络接口,比如enp0s3enp0s8,并且它们都分配到了 IP 地址。enp0s3(Host-Only)的 IP 通常是192.168.56.xxx这样的网段,而enp0s8(NAT)的 IP 可能是10.0.2.xxx请记下enp0s3的 IP 地址,比如192.168.56.101,这是我们后面从宿主机连接虚拟机的地址。

为了后续所有操作都在一个更舒适的环境下进行,我们放弃在 VirtualBox 那个小窗口里敲命令,转而使用一个强大的远程终端工具——MobaXterm。你可以在宿主机(你的Windows电脑)上搜索 MobaXterm 官网下载它的免费家庭版。它集成了 SSH 客户端、SFTP 文件传输、X11 转发等超多功能,比传统的 PuTTY 好用太多。

安装好 MobaXterm 后打开,点击左上角的 “Session”,在新窗口中选择 “SSH”。在 “Remote host” 栏里填入你刚才记下的虚拟机 IP 地址(192.168.56.101),端口保持 22 不变。关键点来了:不要勾选 “Specify username”,我们直接在连接建立后再输入用户名。点击 OK,首次连接会弹出主机密钥确认,点击 Accept。然后它会提示你输入用户名,输入root,回车,再输入密码OpenGauss@123456。登录成功后,MobaXterm 会问你是否保存密码,为了方便可以选 Yes。至此,你就拥有了一个可以复制粘贴(右键菜单)、可以拖拽上传文件、功能强大的终端,后续所有操作都在这里进行。

在 MobaXterm 的终端里,我们开始对 openEuler 系统进行部署前的最后准备。首先关闭防火墙,避免它阻挡数据库端口的通信:

systemctl stop firewalld.service systemctl disable firewalld.service

接着,设置正确的字符集和环境变量。这里需要特别注意粘贴的顺序,我建议你一段一段地执行:

# 设置语言环境 cat >> /etc/profile << EOF export LANG=en_US.UTF-8 EOF # 设置一个变量,指向我们即将安装数据库的软件包路径 cat >> /etc/profile << EOF export packagePath=/opt/software/openGauss EOF # 设置动态链接库路径,这对后续数据库安装至关重要 cat >> /etc/profile << EOF export LD_LIBRARY_PATH=\$packagePath/script/gspylib/clib:\$LD_LIBRARY_PATH EOF

执行完以上三条命令后,运行source /etc/profile让环境变量立即生效。然后可以用echo $LD_LIBRARY_PATH命令检查,它应该显示/opt/software/openGauss/script/gspylib/clib:这个路径。如果显示不对,请检查上面的命令是否粘贴正确,尤其是\$packagePath那里的反斜杠不能丢。

然后关闭 swap 交换分区,这对于数据库性能有好处:swapoff -a。接下来安装两个关键的依赖包:

yum install libaio-devel -y yum install libnsl -y

这两个包分别是异步 I/O 库和网络服务库,openGauss 的运行离不开它们。安装过程如果提示“已经安装”,那是正常的。

最后,确保系统的 Python 版本是 3.x。openEuler 22.03 默认可能已经链接好了,但我们确认一下:

# 检查当前python命令指向哪个版本 python --version # 如果显示是 Python 2.x,则需要创建软链接 cd /usr/bin sudo rm -f python # 移除旧的链接(如果有) sudo ln -s python3 python

再次运行python --version,应该显示 Python 3.9.x 或更高版本。

5. 下载与准备 openGauss 安装包

环境准备好后,我们开始处理 openGauss 数据库本身。首先,创建我们规划好的安装目录:

mkdir -p /opt/software/openGauss cd /opt/software/openGauss

这个/opt/software/openGauss目录就是我们所有数据库相关文件的“家”。

接下来,我们需要下载 openGauss 的安装包。访问 openGauss 的官方开源镜像站,找到对应 openEuler 22.03 (x86_64) 的版本。我们以 5.0.1 版本为例,使用wget命令直接下载到当前目录:

wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/5.0.1/x86_openEuler_2203/openGauss-5.0.1-openEuler-64bit-all.tar.gz

这个-all包包含了数据库核心和客户端工具。下载完成后,解压它:

tar -zxvf openGauss-5.0.1-openEuler-64bit-all.tar.gz

解压后会生成一个openGauss-5.0.1-openEuler-64bit的目录。为了方便后续脚本执行,我们给整个软件目录赋予足够的权限:

chmod 755 -R /opt/software

在安装之前,我们需要一个重要的配置文件来告诉安装程序我们的集群规划。这个文件就是clusterconfig.xml。我们在/opt/software/openGauss目录下创建它:

vi clusterconfig.xml

i键进入编辑模式,然后将下面的配置模板粘贴进去。请注意,其中有六个地方需要根据你的实际情况修改

<?xml version="1.0" encoding="UTF-8"?> <ROOT> <CLUSTER> <PARAM name="clusterName" value="dbCluster" /> <PARAM name="nodeNames" value="db1" /> <PARAM name="backIp1s" value="192.168.56.101"/> <PARAM name="gaussdbAppPath" value="/opt/gaussdb/app" /> <PARAM name="gaussdbLogPath" value="/var/log/gaussdb" /> <PARAM name="gaussdbToolPath" value="/opt/huawei/wisequery" /> <PARAM name="corePath" value="/opt/opengauss/corefile"/> <PARAM name="clusterType" value="single-inst"/> </CLUSTER> <DEVICELIST> <DEVICE sn="1000001"> <PARAM name="name" value="db1"/> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <PARAM name="backIp1" value="192.168.56.101"/> <PARAM name="sshIp1" value="192.168.56.101"/> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="26000"/> <PARAM name="dataNode1" value="/gaussdb/data/db1"/> </DEVICE> </DEVICELIST> </ROOT>

需要修改的六个地方是

  1. value="db1"(第3行):这里的db1是你的节点名称,需要和之前系统设置的主机名一致。
  2. value="192.168.56.101"(第4行):替换成你虚拟机enp0s3(Host-Only网卡) 的实际 IP 地址。
  3. value="db1"(第14行):同样替换成你的节点名称。
  4. value="192.168.56.101"(第15行):替换成你的 IP 地址。
  5. value="192.168.56.101"(第16行):替换成你的 IP 地址。
  6. value="db1"(第18行):节点名称。

修改完成后,按Esc键退出编辑模式,输入:wq保存并退出 vi 编辑器。这个 XML 文件定义了一个单节点(single-inst)的数据库集群,数据库数据将存放在/gaussdb/data/db1目录,数据库服务会监听在26000端口。

6. 执行预安装与数据库初始化

万事俱备,现在开始正式的安装。首先执行预安装脚本,这个脚本会检查环境、创建必要的用户和目录。切换到脚本目录并执行:

cd /opt/software/openGauss/script python gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/clusterconfig.xml

这里的-U omm指定了运行数据库的操作系统用户为omm-G dbgrp指定用户组为dbgrp-X后面指定了我们刚才编辑的配置文件路径。执行过程中,脚本会提示你输入root用户的密码进行权限提升,输入你之前设置的OpenGauss@123456即可。脚本运行结束后,它会提示你需要重启系统以使一些内核参数生效。

输入init 6reboot重启虚拟机。重启后,MobaXterm 的连接会断开。等待一分钟左右,在 MobaXterm 里点击左上角的 “Session” 按钮,选择你之前保存的那个 SSH 会话重新连接。或者直接点击终端窗口,按几次回车,看到登录提示后输入root和密码重新登录。

登录后,我们切换到数据库管理员用户omm进行最终的数据库实例初始化:

su - omm

注意,su -中间的横杠很重要,它意味着完全切换到omm用户的环境。然后进入脚本目录:

cd /opt/software/openGauss/script

现在,执行最重要的初始化命令。这里我们除了基本初始化,还附带了一些针对学习/测试环境的优化参数:

gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--encoding=UTF8" --dn-guc="max_process_memory=2GB" --dn-guc="shared_buffers=128MB" --dn-guc="bulk_write_ring_size=128MB" --dn-guc="cstore_buffers=16MB"

我来解释一下这些参数:

  • -X:指定配置文件。
  • --gsinit-parameter="--encoding=UTF8":设置数据库默认编码为 UTF-8,支持中文。
  • --dn-guc="max_process_memory=2GB":限制单个数据库进程的最大内存使用,防止在资源有限的虚拟机上耗尽内存。
  • --dn-guc="shared_buffers=128MB":设置数据库共享缓冲区大小,这是缓存数据页的内存区域。
  • --dn-guc="bulk_write_ring_size=128MB":优化批量写入操作的性能。
  • --dn-guc="cstore_buffers=16MB":设置列存引擎的缓冲区大小。

执行命令后,安装程序会提示你为数据库的超级用户gs_initdb设置密码。这个密码需要符合强密码策略:必须包含大小写字母、数字和特殊符号。例如,你可以设置成Gauss@123456。请务必牢记这个密码,这是你连接数据库的钥匙。

初始化过程需要几分钟,如果一切顺利,你会看到 “[GAUSS-51600] : The gaussdb instance started successfully” 这样的成功信息。恭喜你,openGauss 数据库实例已经成功创建并启动了!

7. 验证连接与基本操作

数据库启动后,我们来进行连接验证和基本操作。首先,确保你当前在omm用户下。openGauss 安装后自带了一个命令行客户端工具gsql。我们用它来连接本地的数据库实例:

gsql -d postgres -p 26000 -r
  • -d postgres:指定连接初始的postgres数据库(openGauss 兼容 PostgreSQL 协议)。
  • -p 26000:指定连接端口,就是我们配置文件中设置的dataPortBase
  • -r:启用类似readline的行编辑功能,方便上下翻找历史命令。

连接成功后,命令行提示符会变成postgres=#。现在你可以执行一些简单的 SQL 命令来验证数据库是否工作正常:

-- 查看数据库版本 SELECT version(); -- 列出当前所有数据库 \l -- 创建一个测试数据库 CREATE DATABASE testdb; -- 切换到 testdb 数据库 \c testdb -- 创建一张测试表 CREATE TABLE test_table (id INT, name VARCHAR(50)); -- 插入一条数据 INSERT INTO test_table VALUES (1, 'Hello openGauss'); -- 查询数据 SELECT * FROM test_table;

如果每一步都能正确执行并返回结果,那么你的 openGauss 数据库就已经完全就绪,可以投入使用了。你可以随时输入\q退出gsql客户端。

最后,为了节省磁盘空间,我们可以清理掉之前下载的压缩安装包(可选):

# 切换回 root 用户 exit # 回到软件目录 cd /opt/software/openGauss # 删除安装包 rm -f openGauss-5.0.1-openEuler-64bit-all.tar.gz

至此,一个在 openEuler 虚拟环境中从零部署的 openGauss 数据库已经全部完成。这个环境现在完全属于你,你可以在这里安全地学习 SQL、测试应用、甚至尝试一些数据库管理操作。以后每次使用,只需要启动 VirtualBox 中的openEuler_DB虚拟机,然后用 MobaXterm 连接上去,切换到omm用户,就可以使用gsql操作数据库了。整个过程虽然步骤不少,但每一步都有其作用,亲手走一遍,你对 Linux 操作、网络配置和数据库安装的理解肯定会加深不少。如果在哪一步遇到了问题,别慌,回头仔细检查一下命令、IP地址和配置文件,99%的问题都出在这些细节上。

http://www.jsqmd.com/news/452156/

相关文章:

  • 模型剪枝实战:从理论到PyTorch实现
  • 开源工具高效实践:从入门到精通的实战指南
  • 避坑指南:Uipath获取属性活动常见的5个错误用法及正确示范
  • GLM-OCR命令行工具开发:打造便捷的本地文档解析利器
  • 性能跃迁!多尺度特征融合+Transformer,模型效率与精度双提升
  • 如何突破MTK芯片调试瓶颈?开源工具全流程解决方案
  • SpringDoc OpenAPI 实战指南:从零构建高效API文档
  • SEER‘S EYE 预言家之眼模型解析:从STM32嵌入式设备到云端AI的协同设计思路
  • Windows/Mac/Linux三平台OpenCPN海图目录配置避坑指南
  • InsightFace(RetinaFace + ArcFace)人脸识别实战:从模型部署到Web服务构建
  • MedGemma X-Ray实战效果:对话式影像分析,提问即得专业答案
  • 手机检测WebUI界面功能全解:上传/粘贴/示例/手动触发/结果可视化
  • MacBook老用户必看:macOS 10.13-10.15系统安装全攻略(附常见问题解决方案)
  • 不归零法编码、曼彻斯特编码与差分曼彻斯特编码:原理、对比与应用场景解析
  • Z-Image-ComfyUI快速上手:用阿里开源模型实现中文场景AI绘画
  • 高效搞定学术PDF翻译:BabelDOC全场景实战指南
  • 智能标注驱动AI训练数据准备:BooruDatasetTagManager全流程解决方案
  • AgentCPM效果对比:与传统“Java八股文”式报告生成工具的差异与优势
  • SerialPlot:3步实现串口数据可视化的效率革命
  • 3个步骤为cpp-httplib服务轻松实现全链路追踪:从黑盒到透明化
  • SOONet模型C语言基础接口调用与性能优化
  • 卡证检测矫正模型在自动化运维中的应用:服务器资产证件信息管理
  • BepInEx完全指南:从入门到精通的插件开发实践
  • MTK Android12 预装apk可卸载实现方案详解
  • 猫抓cat-catch媒体嗅探工具:从新手到高手的视频资源获取指南
  • 告别复杂配置!用YOLOv10官版镜像快速实现批量目标检测
  • 5倍效率提升:Boss直聘批量投递工具全攻略
  • 晶体三极管工作原理与电路设计实战解析
  • Clawdbot企业级部署实战:利用内网穿透技术实现安全访问
  • 比迪丽LoRA模型快速部署指南:10分钟完成星图GPU镜像启动