华为自研数据库openGauss 环境搭建(docker容器启动方式)

华为自研数据库openGauss 环境搭建(docker容器部署方式)

部署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

社区的官方指导文档。

【免责声明】本文仅代表作者本人观点,对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。

软硬件环境要求(openGuass官方文档)

硬件环境要求

表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
PythonopenEuler:支持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。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。

搭建环境配置

  • 华为云耀云服务器 ——1*8核 2G
  • 操作系统:CentOS 7.6 x64
  • 系统盘:40GB

Python3.6.x.编译安装

因为openGauss在部署,需要Python3.6.x中的一些动态链接库,之前没有准备,出现了很多的问题,所以最好配置好。

源码编译安装(大致30min)

## 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
  • 注意:可以根据需要下载不同版本的python,只需要更改相应的路径即可。

成功界面

Docker安装

本地虚拟机演示,云主机相同操作即可。

  • 检查Linux内核版本,必须是3.10及以上
[root@localhost ~]# uname -r
3.10.0-1062.18.1.el7.x86_64
  • 安装docker
[root@localhost ~]# yum install docker
  • 检查docker
[root@localhost ~]# docker -v
Docker version 1.13.1, build cccb291/1.13.1
  • 启动docker
[root@localhost ~]# systemctl start docker
  • 设置开机启动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.
  • 停止docker
[root@localhost ~]# systemctl stop docker

Docker 的常用命令

镜像操作命令

操作命令说明
检索docker search 关键字 eg:docker search mysqldocker hub上检索镜像的详细信息,如镜像的TAG。
拉取docker pull 镜像名:tag:tag是可选的,tag表示标签,多为软件的版本,默认是latest
列表docker images查看所有本地镜像
删除docker rmi image-id删除指定的本地镜像

查询镜像:https://hub.docker.com/

openGuass数据库镜像拉取

前往dockerhub官网查询对应的镜像。

  • 在输入框输入:opengauss即可出现下图内容
  • 本人搭建使用的是aff123/opengauss, 使用第一个镜像可能会出现 docker 启动镜像的时候闪退的现象。

enmotech/opengauss 镜像拉取命令

$ docker pull enmotech/opengauss:latest
or
$ docker pull enmotech/opengauss:1.0.0

blueapple/opengauss 镜像拉取命令

$ docker pull blueapple/opengauss:latest
or
$ docker pull blueapple/opengauss:1.0.0

travelliu/opengauss 镜像拉取命令

$ docker pull travelliu/opengauss:test

aff123/opengauss 镜像拉取命令

$ docker pull aff123/opengauss:latest

镜像拉取

创建openGuass容器并启动

启动openGuass实例

  • shell 命令
$ 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

在上述命令正常启动容器数据库之后,可以通过外部进行数据库访问。

然后设置安全组,放开 tcp:8888 访问权限

使用 DataGrip 2019.3 连接数据库

创建数据源 (data source)

因为华为自研的 openGauss是基于 PostgreSQL的,所以选择该数据源连接

填写连接配置

在连接的过程中,如果是首次使用 PostgreSQL会提示下载对应的驱动程序,点击同意下载即可。

成功界面:

SQL测试

在完成上述步骤后,即可进入数据库操作界面。

我们可以看到已经初始化了一些数据库和表了。

我们可以执行一些SQL语句测试是否能正常使用。

可见,数据库容器在主机上可以通过 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/


  • 1
    点赞
  • 23
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

LengDanRan

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值