华为自研数据库openGauss 环境搭建(docker容器启动方式)
华为自研数据库openGauss 环境搭建(docker容器部署方式)部署openGauss数据库官网提供安装包的方式,但这种方式,配置极易出错,需要编写相应的配置文件,如果在本地搭建的话,系统如果不符合官方标准,则是需要修改系统的配置,相对来说,比较复杂。我在这里介绍一种比较方便和快捷的部署方式——docker容器部署。有关安装包的部署方式,可以参考opengausshttps://openga
华为自研数据库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 |
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。此用户具备数据库的最高操作权限,此用户初始密码由用户指定。
搭建环境配置
- 华为云耀云服务器 ——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 mysql | docker 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/
更多推荐
所有评论(0)