部署openGauss数据库官网提供安装包的方式,但这种方式,配置极易出错,需要编写相应的配置文件,如果在本地搭建的话,系统如果不符合官方标准,则是需要修改系统的配置,相对来说,比较复杂。我在这里介绍一种比较方便和快捷的部署方式——docker容器部署。有关安装包的部署方式,可以参考opengauss
https://opengauss.org/zh/docs/1.0.0/docs/Quickstart/%E5%AE%89%E8%A3%85%E5%87%86%E5%A4%87.html
社区的官方指导文档。
【免责声明】本文仅代表作者本人观点,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。
表1列出了openGauss服务器应具备的最低硬件要求。
表 1 硬件环境要求
项目 | 配置描述 |
---|---|
内存 | 功能调试建议32GB以上。 性能测试和商业部署时,单实例部署建议128GB以上。 复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。 |
CPU | 功能调试最小1×8 核 2.0GHz。 性能测试和商业部署时,单实例部署建议1×16核 2.0GHz。 CPU超线程和非超线程两种模式都支持。但是,openGauss各节点的设置需保持一致。 |
硬盘 | 用于安装openGauss的硬盘需最少满足如下要求: 至少1GB用于安装openGauss的应用程序包。每个主机需大约300MB用于元数据存储。预留70%以上的磁盘剩余空间用于数据存储。 建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。 openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。 |
网络要求 | 300兆以上以太网。 建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。 openGauss网络如果配置bond,请保证bond模式一致,不一致的bond配置可能导致openGauss工作异常。 |
表 2 软件环境要求
软件类型 | 配置描述 |
---|---|
Linux操作系统 | openEuler 20.3LTS和CentOS 7.6 |
Linux文件系统 | 剩余inode个数 > 15亿(推荐) |
工具 | bzip2 |
Python | openEuler:支持Python 3.7.X CentOS:支持Python 3.6.X |
为了实现安装过程中安装帐户权限最小化,及安装后openGauss的系统运行安全性。安装脚本在安装过程中会自动按照用户指定创建安装用户,并将此用户作为后续运行和维护openGauss的管理员帐户。
用户/组名 | 所属类型 | 规划建议 |
---|---|---|
dbgrp | 操作系统 | 建议规划单独的用户组,例如dbgrp。 初始化安装环境时,由-G参数所指定的安装用户所属的用户组。该用户组如果不存在,则会自动创建,也可提前创建好用户组。在执行gs_preinstall脚本时会检查权限。gs_preinstall脚本会自动赋予此组中的用户对安装目录、数据目录的访问和执行权限。 创建dbgrp用户组命令: groupadd dbgrp |
omm | 操作系统 | 建议规划用户用于运行和维护openGauss,例如omm。 初始化安装环境时,由-U参数所指定和自动创建的操作系统用户,如果已经存在该用户,请清理该用户或更换初始化用户。从安全性考虑,对此用户的所属组规划如下: 所属组:dbgrp |
在安装openGauss过程中运行“gs_install”时,会创建与安装用户同名的数据库用户,即数据库用户omm。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。
因为openGauss在部署,需要Python3.6.x中的一些动态链接库,之前没有准备,出现了很多的问题,所以最好配置好。
## Python3 源码编译安装耗时约30分钟
yum install gcc zlib* openssl* -y
tar -zxvf Python-3.6.7.tgz
cd Python-3.6.11
./configure --prefix=/usr/python3.6.7 --enable-optimizations --enable-shared
make
make install
ln -s /usr/python3.6.7/bin/python3.6 /usr/bin/python3
ln -s /usr/python3.6.7/bin/pip3 /usr/bin/pip3
ln -s /usr/python3.6.7/lib/libpython3.6m.so.1.0 /usr/lib64/
export LD_LIBRARY_PATH=/usr/python3.6.7/lib:$LD_LIBRARY_PATH
本地虚拟机演示,云主机相同操作即可。
[root@localhost ~]# uname -r
3.10.0-1062.18.1.el7.x86_64
[root@localhost ~]# yum install docker
[root@localhost ~]# docker -v
Docker version 1.13.1, build cccb291/1.13.1
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# systemctl stop docker
操作 | 命令 | 说明 |
---|---|---|
检索 | docker search 关键字 eg:docker search mysql |
docker hub上检索镜像的详细信息,如镜像的TAG。 |
拉取 | docker pull 镜像名:tag |
:tag是可选的,tag表示标签,多为软件的版本,默认是latest |
列表 | docker images |
查看所有本地镜像 |
删除 | docker rmi image-id |
删除指定的本地镜像 |
查询镜像:https://hub.docker.com/
前往dockerhub官网查询对应的镜像。
- 在输入框输入:opengauss即可出现下图内容
- 本人搭建使用的是aff123/opengauss, 使用第一个镜像可能会出现 docker 启动镜像的时候闪退的现象。
$ docker pull enmotech/opengauss:latest
or
$ docker pull enmotech/opengauss:1.0.0
$ docker pull blueapple/opengauss:latest
or
$ docker pull blueapple/opengauss:1.0.0
$ docker pull travelliu/opengauss:test
$ docker pull aff123/opengauss:latest
$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=Enmo@123 enmotech/opengauss:latest
为了更灵活的使用openGuass镜像,可以设置额外的参数。当前版本支持以下变量的设定。
GS_PASSWORD
在你使用openGauss镜像的时候,必须设置该参数。该参数值不能为空或者不定义。该参数设置了openGauss数据库的超级用户omm以及测试用户gaussdb的密码。openGauss安装时默认会创建omm超级用户,该用户名暂时无法修改。测试用户gaussdb是在docker-entrypoint.sh中自定义创建的用户。
openGauss镜像配置了本地信任机制,因此在容器内连接数据库无需密码,但是如果要从容器外部(其它主机或者其它容器)连接则必须要输入密码。
openGauss的密码有复杂度要求,需要:密码长度8个字符以上,必须同时包含英文字母,数字,以及特殊符号
GS_NODENAME
指定数据库节点名称 默认为gaussdb
GS_USERNAME
指定数据库连接用户名 默认为gaussdb
GS_PORT
指定数据库端口,默认为5432。
首先查看容器的状态是否为 运行状态。
在root用户状态下使用连接命令连接数据库:
$ docker exec -it opengauss1 sh
至此,已经连接到了数据库中。注意要切换到
omm
用户,使用gsql
命令连接数据库。
openGauss的默认监听启动在容器内的5432端口上,如果想要从容器外部访问数据库,则需要在docker run
的时候指定-p
参数。比如以下命令将允许使用8888端口访问容器数据库。
$ docker run --name opengauss --privileged=true -d -e GS_PASSWORD=secretpassword@123 -p 8888:5432 enmotech/opengauss:latest
在上述命令正常启动容器数据库之后,可以通过外部进行数据库访问。
因为华为自研的
openGauss
是基于PostgreSQL
的,所以选择该数据源连接
在连接的过程中,如果是首次使用 PostgreSQL
会提示下载对应的驱动程序,点击同意下载即可。
我们可以看到已经初始化了一些数据库和表了。
可见,数据库容器在主机上可以通过 DataGrip
连接正常使用。
感谢 openGauss镜像的提供者 aff123
,镜像使用参考文档的提供者 云和恩墨
,同时也感谢华为 openGauss
社区的技术支持。
aff123镜像: https://hub.docker.com/r/aff123/opengauss
云和恩墨镜像及参考文档:https://hub.docker.com/r/enmotech/opengauss
云和恩墨镜像维护者项目地址:https://github.com/enmotech
华为openGauss社区官方网站:https://opengauss.org/