当前位置:   article > 正文

step-by-step系列之-openGauss1-0-1-Docker版本单机安装指南

step-by-step系列之-openGauss1-0-1-Docker版本单机安装指南

step by step 系列之:openGauss1.0.1 Docker 版本单机安装指南

1.软硬件环境

硬件环境:

项目

最低配置

推荐配置

测试配置

硬盘

用于安装openGauss的硬盘需最少满足如下要求:

  • 至少1GB用于安装openGauss的应用程序包。
  • 每个主机需大约300MB用于元数据存储。
  • 预留70%以上的磁盘剩余空间用于数据存储。

建议系统盘配置为Raid1,数据盘配置为Raid5,且规划4组Raid5数据盘用于安装openGauss。有关Raid的配置方法在本手册中不做介绍。请参考硬件厂家的手册或互联网上的方法进行配置,其中Disk Cache Policy一项需要设置为Disabled,否则机器异常掉电后有数据丢失的风险。

openGauss支持使用SSD盘作为数据库的主存储设备,支持SAS接口和NVME协议的SSD盘,以RAID的方式部署使用。

900G

内存

2GB

功能调试32GB以上。

性能测试和商业部署时,单实例部署建议128GB以上。

复杂的查询对内存的需求量比较高,在高并发场景下,可能出现内存不足。此时建议使用大内存的机器,或使用负载管理限制系统的并发。

8G

CPU

功能调试最小1×8 核 2.0GHz。

性能测试和商业部署时,单实例部署建议1×16核 2.0GHz。

CPU超线程和非超线程两种模式都支持。但是,openGauss各节点的设置需保持一致。

4核

网络

300兆以上以太网。

建议网卡设置为双网卡冗余bond。有关网卡冗余bond的配置方法在本手册中不做介绍。请参考硬件厂商的手册或互联网上的方法进行配置。

openGauss网络如果配置bond,请保证bond模式一致,不一致的bond配置可能导致openGauss工作异常。

千兆

软件环境:

表 1 软件环境要求

软件类型

配置描述

Linux操作系统

openEuler 20.3LTS和CentOS 7.X

  

说明:能够安装docker基本没有限制

2.安装、配置 docker

安装流程:

先安装 docker 软件,下载数据库 Docker image,启动 Docker,进入数据库,初体验。

2.1.安装 docker 软件

  1. [root@node1 ~]#
  2. yum -y install docker

#检查 docker 的版本:

  1. docker -v
  2. Docker version 1.13.1, build 64e9980/1.13.1

2.2.配置、启动 docker 服务

对 docker 进行简单设置:

  1. systemctl enable docker #开机启动docker
  2. systemctl status docker #查看docker状态
  3. [root@node1 ~]# systemctl enable docker
  4. Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  5. [root@node1 ~]# systemctl status docker
  6. docker.service - Docker Application Container Engine
  7. Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
  8. Active: inactive (dead)
  9. Docs: http://docs.docker.com
  10. [root@node1 ~]#

设置 docker 镜像源

#修改这个文件为如下内容

  1. cat>/etc/docker/daemon.json<<EOF
  2. {
  3. "registry-mirrors": ["https://oinh00fc.mirror.aliyuncs.com"]
  4. }
  5. EOF

检查修改情况:

 cat /etc/docker/daemon.json

# 检查 Docker 是否启动:

  1. systemctl status docker
  2. docker.service - Docker Application Container Engine
  3. Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  4. Active: inactive (dead)
  5. Docs: http://docs.docker.com
  6. [root@node1 ~]#

#启动 Docker

  systemctl start docker

# 检查启动是否正常:

  1. [root@node1 ~]# systemctl status docker
  2. docker.service - Docker Application Container Engine
  3. Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
  4. Active: active (running) since Thu 2020-10-15 09:01:06 CST; 5s ago
  5. Docs: http://docs.docker.com
  6. Main PID: 11215 (dockerd-current)
  7. Tasks: 30
  8. CGroup: /system.slice/docker.service
  9. ├─11215 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/do...
  10. └─11225 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libco...
  11. Oct 15 09:01:05 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:05.0...
  12. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.0...
  13. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.1...
  14. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.1...
  15. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.1...
  16. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
  17. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
  18. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
  19. Oct 15 09:01:06 node1.localdomain dockerd-current[11215]: time="2020-10-15T09:01:06.2...
  20. Oct 15 09:01:06 node1.localdomain systemd[1]: Started Docker Application Container ...e.
  21. Hint: Some lines were ellipsized, use -l to show in full.
  22. [root@node1 ~]#

2.3. 查找、下载、使用 openGauss Docker 镜像

2.3.1 查找 opengauss 镜像

  1. # docker search opengauss
  2. [root@node1 ~]# docker search opengauss
  3. INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  4. docker.io docker.io/enmotech/opengauss openGauss latest images created by Enmotech 6
  5. docker.io docker.io/aff123/opengauss aff学习opengauss 0
  6. docker.io docker.io/blueapple/opengauss opengauss 1.0.0 CentOS 7.8.2003 0
  7. docker.io docker.io/fibird/opengauss 0
  8. docker.io docker.io/gaobo1997/opengauss_compile OpenGauss Compile Environment 0
  9. docker.io docker.io/travelliu/opengauss 0

2.3.2 获取 docker 镜像

#docker pull docker.io/enmotech/opengauss

或者 docker pull enmotech/opengauss:1.0.1

  1. [root@node1 ~]# docker pull docker.io/enmotech/opengauss
  2. Using default tag: latest
  3. Trying to pull repository docker.io/enmotech/opengauss ...
  4. latest: Pulling from docker.io/enmotech/opengauss
  5. ac9208207ada: Pull complete
  6. 2bedb2e83de5: Pull complete
  7. db7ef826320f: Pull complete
  8. 2e41de1b5de7: Pull complete
  9. d528682a66c4: Pull complete
  10. 88163b222086: Pull complete
  11. 7ea9446096be: Pull complete
  12. 2a10ad7221b8: Pull complete
  13. Digest: sha256:d1aa6c3b5062a03b6f8ec3f7bae8a388e027df443a2c992c60e8e909ac91101b
  14. Status: Downloaded newer image for docker.io/enmotech/opengauss:latest

或者 docker pull enmotech/opengauss:1.0.1

  1. Trying to pull repository docker.io/enmotech/opengauss ...
  2. 1.0.1: Pulling from docker.io/enmotech/opengauss
  3. ac9208207ada: Pull complete
  4. 2bedb2e83de5: Pull complete
  5. db7ef826320f: Pull complete
  6. 2e41de1b5de7: Pull complete
  7. d528682a66c4: Pull complete
  8. 88163b222086: Pull complete
  9. 7ea9446096be: Pull complete
  10. 2a10ad7221b8: Pull complete
  11. Digest: sha256:d1aa6c3b5062a03b6f8ec3f7bae8a388e027df443a2c992c60e8e909ac91101b
  12. Status: Downloaded newer image for docker.io/enmotech/opengauss:1.0.1
  13. [root@node1 ~]#

2.3.3 查看镜像

# docker images

  1. [root@node1 ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. docker.io/enmotech/opengauss latest 80711c4eb80a 5 weeks ago 485 MB
  4. #[root@node1 ~]# docker images
  5. REPOSITORY TAG IMAGE ID CREATED SIZE
  6. docker.io/enmotech/opengauss 1.0.1 80711c4eb80a 5 weeks ago 485 MB
  7. [root@node1 ~]#

说明:两种 pull 的 tag 内容不一样.

检查 docker 是否启动

# docker ps

  1. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  2. #

没有启动,启动数据库容器

2.3.4 启动数据库容器

这里我们使用 enmotech/opengauss:latest 的镜像。

以下命令使用 opengauss 镜像启动一个容器,参数为以命令行模式进入该容器:

存储数据持久化,从容器外部连接容器数据库,openGauss 的默认侦听启动在容器内的 5432 端口上,如果想要从容器外部访问数据库,则需要在 docker run 的时候指定-p 参数。比如以下命令将允许使用 8888 端口访问容器数据库。

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

# docker run --name opengaussnet --privileged=true -d -e GS_PASSWORD=Passw0rd@1234 \

-v /enmotech/opengauss:/var/lib/opengauss \

-p 8888:5432 enmotech/opengauss:latest

说明:windows 下,C:\Users\oldbear2008>docker run --name opengaussnet --privileged=true -d -e GS_PASSWORD=Passw0rd@1234 -v /enmotech/opengauss:/var/lib/opengauss -p 8888:5432 enmotech/opengauss:latest 05755ccc4abea16bbfff6a361451470069daf2e16c7f551caee3b4bfbd1bbe45

数据持久化:

Docker 中 openGauss 的所有数据文件:/var/lib/opengauss 目录 ,存储在宿主机的/enmotech/opengauss 下。

宿主机的/enmotech/opengauss 如果不存在,会自动创建,但是必须是绝对路径。

Docker 对其拥有读写权限。

网络端口:

8888:对外访问端口

2.5.5 openGauss 容器数据持久化验证

新开一个窗口检查容器 ID:

  1. [root@node1 ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 794d54eaa87c enmotech/opengauss:latest "entrypoint.sh gau..." 3 minutes ago Up 3 minutes 5432/tcp opengauss
  4. [root@node1 ~]#
  5. [root@node1 ~]# docker exec -it ac74618df201 bash

在容器内部查看数据库目录:

  1. [root@ac74618df201 data]# pwd
  2. /var/lib/opengauss/data
  3. [root@ac74618df201 data]# ls
  4. base gswlm_userinfo.cfg pg_copydir pg_hba.conf pg_log pg_serial pg_twophase postgresql.conf.lock
  5. gaussdb.state mot.conf pg_csnlog pg_ident.conf pg_multixact pg_snapshots PG_VERSION postmaster.opts
  6. global pg_audit pg_ctl.lock pg_llog pg_notify pg_stat_tmp pg_xlog postmaster.pid
  7. gs_profile pg_clog pg_errorinfo pg_location pg_replslot pg_tblspc postgresql.conf
  8. [root@ac74618df201 data]#

在操作系统查看容器数据库的目录:

再打开一个终端:

  1. [root@node1 data]# pwd
  2. /enmotech/opengauss/data
  3. [root@node1 data]# ls
  4. base gswlm_userinfo.cfg pg_copydir pg_hba.conf pg_log pg_serial pg_twophase postgresql.conf.lock
  5. gaussdb.state mot.conf pg_csnlog pg_ident.conf pg_multixact pg_snapshots PG_VERSION postmaster.opts
  6. global pg_audit pg_ctl.lock pg_llog pg_notify pg_stat_tmp pg_xlog postmaster.pid
  7. gs_profile pg_clog pg_errorinfo pg_location pg_replslot pg_tblspc postgresql.conf
  8. [root@node1 data]#

可以看到容中的数据存储到操作系统中来了。

完成持存储数据久化。

存储持久化测试:

创建表:T1

  1. omm=# create table t1(col int);
  2. CREATE TABLE
  3. omm=# \dt
  4. List of relations
  5. Schema | Name | Type | Owner | Storage
  6. --------+------+-------+-------+----------------------------------
  7. public | t1 | table | omm | {orientation=row,compression=no}
  8. (1 row)
  9. omm=# \q

关闭数据库:

  1. [omm@ac74618df201 ~]$ cd $GAUSSHOME/bin
  2. [omm@ac74618df201 bin]$ ls
  3. alarmItem.conf gs_basebackup gs_initdb gstrace kinit pg_config retry_errcodes.conf
  4. cluster_guc.conf gs_ctl gs_probackup kadmin.local klist pg_controldata script
  5. dbmind gs_dump gs_restore kadmind krb5kdc pg_receivexlog transfer.py
  6. encrypt gs_dumpall gs_tar kdb5_util makesgml pg_recvlogical
  7. gaussdb gs_guc gsql kdestroy openssl pg_resetxlog
  8. [omm@ac74618df201 bin]$ gs_ctl stop -D /var/lib/opengauss/data/
  9. [2020-11-14 12:37:36.959][297][][gs_ctl]: gs_ctl stopped ,datadir is -D "/var/lib/opengauss/data"

重启 Docker 数据库:

启动容器:

[root@node1 ~]# docker start ac74618df201

进入容器:

  1. docker exec -it ac74618df201 bash
  2. [root@ac74618df201 /]# su - omm
  3. Last login: Sat Nov 14 12:41:56 UTC 2020
  4. [omm@ac74618df201 ~]$ gsql
  5. gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr )
  6. Non-SSL connection (SSL connection is recommended when requiring high-security)
  7. Type "help" for help.
  8. omm=# \dt
  9. List of relations
  10. Schema | Name | Type | Owner | Storage
  11. --------+------+-------+-------+----------------------------------
  12. public | t1 | table | omm | {orientation=row,compression=no}
  13. (1 row)
  14. omm=#

结论:数据没有丢失,容器持久化验证完毕。

2.5.6 开始体验 opengaussdb 数据库:

  1. [root@794d54eaa87c /]# su - omm
  2. [omm@794d54eaa87c ~]$ gsql -r
  3. gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr )
  4. Non-SSL connection (SSL connection is recommended when requiring high-security)
  5. Type "help" for help.
  6. omm=# \l
  7. List of databases
  8. Name | Owner | Encoding | Collate | Ctype | Access privileges
  9. -----------+-------+----------+------------+------------+-------------------
  10. omm | omm | UTF8 | en_US.utf8 | en_US.utf8 |
  11. postgres | omm | UTF8 | en_US.utf8 | en_US.utf8 |
  12. template0 | omm | UTF8 | en_US.utf8 | en_US.utf8 | =c/omm +
  13. | | | | | omm=CTc/omm
  14. template1 | omm | UTF8 | en_US.utf8 | en_US.utf8 | =c/omm +
  15. | | | | | omm=CTc/omm
  16. (4 rows)
  17. omm=#

在 Docker 容器中,查看后台进程:

  1. [omm@794d54eaa87c ~]$ ps -ef|grep gauss
  2. omm 1 0 3 01:53 ? 00:00:29 gaussdb
  3. omm 277 257 0 02:09 ? 00:00:00 grep --color=auto gauss
  4. [omm@794d54eaa87c ~]$ ps -T -p 1
  5. PID SPID TTY TIME CMD
  6. 1 1 ? 00:00:00 GaussMaster
  7. 1 191 ? 00:00:00 jemalloc_bg_thd
  8. 1 194 ? 00:00:00 GaussMaster
  9. 1 195 ? 00:00:00 SysLogger
  10. 1 196 ? 00:00:00 jemalloc_bg_thd
  11. 1 197 ? 00:00:00 AlarmChecker
  12. 1 198 ? 00:00:00 Reaper
  13. 1 199 ? 00:00:00 jemalloc_bg_thd
  14. 1 200 ? 00:00:00 jemalloc_bg_thd
  15. 1 225 ? 00:00:00 Checkpointer
  16. 1 226 ? 00:00:03 PageWriter
  17. 1 227 ? 00:00:00 PageWriter
  18. 1 228 ? 00:00:00 BgWriter
  19. 1 229 ? 00:00:00 BgWriter
  20. 1 230 ? 00:00:00 WalWriter
  21. 1 231 ? 00:00:00 AutoVacLauncher
  22. 1 232 ? 00:00:00 JobScheduler
  23. 1 233 ? 00:00:00 StatCollector
  24. 1 234 ? 00:00:01 WDRSnapshot
  25. 1 235 ? 00:00:21 PercentileJob
  26. 1 236 ? 00:00:00 Auditor
  27. 1 237 ? 00:00:00 LWLockMonitor
  28. 1 238 ? 00:00:00 WlmCollector
  29. 1 239 ? 00:00:00 WlmMonitor
  30. 1 240 ? 00:00:00 WlmArbiter
  31. [omm@794d54eaa87c ~]$

而在操作系统中,看不到 opengauss:

  1. [root@node1 ~]# ps -ef|grep opengauss
  2. root 12502 10853 0 10:09 pts/1 00:00:00 grep --color=auto opengauss
  3. [root@node1 ~]#

检查数据库的状态:

  1. [omm@ac74618df201 data]$ gs_ctl query -D /var/lib/opengauss/data/
  2. [2020-11-15 02:48:36.961][145][][gs_ctl]: gs_ctl query ,datadir is -D "/var/lib/opengauss/data"
  3. HA state:
  4. local_role : Normal
  5. static_connections : 0
  6. db_state : Normal
  7. detail_information : Normal
  8. Senders info:
  9. No information
  10. Receiver info:
  11. No information
  12. [omm@ac74618df201 data]$

在容器内部访问:

使用新的数据库用户连接:

  1. [omm@794d54eaa87c ~]$ gsql -U enmotech -d enmotechdb -W Enm0t3ch -r
  2. gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr )
  3. Non-SSL connection (SSL connection is recommended when requiring high-security)
  4. Type "help" for help.
  5. enmotech=>
  6. enmotech=> \du
  7. List of roles
  8. Role name | Attributes | Member of
  9. -----------+------------------------------------------------------------------------+-----------
  10. enmotech | Create DB, Sysadmin | {}
  11. gaussdb | | {}
  12. omm | Sysadmin, Create role, Create DB, Replication, Administer audit, UseFT | {}
  13. enmotech=>
  • Docker 容器数据库基本管理

Docker 容器数据库如何重新启动

3.1 场景:关闭或重启虚拟机服务器时,如何启动 Docker 容器数据库.

关闭数据库 :

gs_ctl stop -D /var/lib/opengauss/data/

重启容器所在的虚拟机。

启动 Docker 数据库:

启动容器:

[root@node1 ~]# docker start ac74618df201

进入容器:

  1. docker exec -it ac74618df201 bash
  2. [root@ac74618df201 /]# su - omm
  3. Last login: Sat Nov 14 12:41:56 UTC 2020
  4. [omm@ac74618df201 ~]$ gsql -r
  5. gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr )
  6. Non-SSL connection (SSL connection is recommended when requiring high-security)
  7. Type "help" for help.
  8. omm=# \dt

3.2 场景:虚机不关、不重启闭时,如何再次启动 Docker 容器数据库.

直接关闭 Docker,再启动 docker:

接着上次环境,先退出容器:

  1. [root@ac74618df201 /]# exit
  2. [root@node1 ~]# docker stop ac74618df201 ##关闭容器
  3. ac74618df201
  4. [root@node1 ~]# docker start ac74618df201 ##重启容器
  5. ac74618df201
  6. [root@node1 ~]# docker exec -it ac74618df201 bash ##进入容器
  7. [root@ac74618df201 /]# ps -ef|grep gauss ##检查数据库进程
  8. omm 1 0 6 03:00 ? 00:00:01 gaussdb
  9. root 93 77 0 03:01 ? 00:00:00 grep --color=auto gauss
  10. [root@ac74618df201 /]# su - omm
  11. Last login: Sun Nov 15 02:57:51 UTC 2020
  12. [omm@ac74618df201 ~]$
  13. [omm@ac74618df201 ~]$ gsql -r ###登录数据库
  14. gsql ((openGauss 1.0.1 build e9da9fb9) compiled at 2020-10-01 13:58:32 commit 0 last mr )
  15. Non-SSL connection (SSL connection is recommended when requiring high-security)
  16. Type "help" for help.
  17. omm=#

数据库启动,可以进行相关实验测试。

End

  • 通过 DS 客户端访问容器内部数据库

1)测试环境准备(非必要):

创建用户、数据库,并授权给数据库:

  1. create user enmotech with password 'Enm0t3ch';
  2. create database enmotechdb owner enmotech;
  3. GRANT ALL PRIVILEGES ON DATABASE enmotechdb to enmotech;
  4. ALTER ROLE enmotech CREATEDB;
  5. GRANT ALL PRIVILEGES TO enmotech;
  6. omm=# create user enmotech with password 'Enm0t3ch';
  7. NOTICE: The encrypted password contains MD5 ciphertext, which is not secure.
  8. CREATE ROLE
  9. omm=# create database enmotechdb owner enmotech;
  10. CREATE DATABASE
  11. omm=# GRANT ALL PRIVILEGES ON DATABASE enmotechdb to enmotech;
  12. GRANT
  13. omm=# ALTER ROLE enmotech CREATEDB;
  14. ALTER ROLE
  15. omm=# GRANT ALL PRIVILEGES TO enmotech;
  16. ALTER ROLE
  17. omm=# \q

2)修改数据库访问控制配置文件:

在 pg_hba.conf 文件中添加远程主机所在的网段,允许远程访问,如下:

  1. [omm@ac74618df201 data]$
  2. cat >>/var/lib/opengauss/data/pg_hba.conf<<EOF
  3. host all enmo1 ***.***.***.***/24 md5
  4. EOF
  5. [omm@ac74618df201 data]$

3)使用 DS 客户端登录容器数据库:

 

END

附录:

参考文档资料:

Docker 中的环境变量:

  1. GAUSSHOME=/usr/local/opengauss
  2. GAUSSDATA=/var/lib/opengauss/data

在容器外部访问(略)

查看 docker ip:

[root@node1 ~]# ifconfig docker

修改 docker ip:

https://www.cnblogs.com/zhangyongli2011/p/12981754.html

gsql -d enmotech -U enmotech -W'Enm0t3ch' -h ... -p 8888

DOcker 容器化:

https://hub.docker.com/r/enmotech/opengauss

菜鸟教程:

Docker 容器使用 | 菜鸟教程

墨天轮:docker 安装文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/330917?site
推荐阅读
相关标签
  

闽ICP备14008679号