docker安装华为gaussdb数据库

  • 基本概念
  • docker安装gaussdb
  • 拉取镜像
  • 启动容器
  • 进入容器测试
  • 客户端工具测试
  • gsql连接与使用方法
  • 语法
  • 数据类型
  • 简单数据管理
  • 高级数据管理
  • 高级特性


基本概念

openGauss是一款关系型数据库管理系统(RDBMS)。关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。

openGauss的数据库节点负责存储数据,其存储介质也是磁盘。逻辑视角下,可以看到数据库节点上对象包含表空间、数据库、数据文件、表、数据块。对象之间的关。

opengauss与mysql语法区别 opengauss与gaussdb区别_gaussdb


数据库(Database)

数据库是存储在一起的相关数据的集合,这些数据可以被访问,管理以及更新。

数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。

数据块(Block)
数据块是数据库管理的基本单位,默认大小为8KB。

行(Row)
一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

列(Cloumn)
每一列被当作是一个字段。每个字段中的值代表一种类型的数据。例如,一个表可能有3个字段,姓名、城市和国家。这个表就会有3列,一列代表姓名,一列代表城市,一列代表国家。表中的每一行包含3个字段的内容,姓名字段包含姓名,城市字段包含城市,国家字段包含国家。

表(Table)
表是由行与列组合成的,是数据库中用来存储数据的对象,是整个数据库系统的基础。

每张表只能属于一个数据库,也只能对应到一个表空间。每张表对应的数据文件必须在同一个表空间中。

数据文件(Datafile Segment)
通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。

表空间(Tablespace)
在openGauss中,表空间是一个目录,在物理数据和逻辑数据间提供了抽象的一层,为所有的数据库对象分配存储空间,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。

表空间可以存在多个,创建好之后,创建数据库对象时可以指定该对象所属的表空间。

模式(schema)
数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、同义名、索引及数据库链接。

事务(Transaction)
数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

同时,事务也是恢复和并发控制的基本单位,必须具备ACID特性,即:

原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(Durability):持久性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
参考官网:基本概念

docker安装gaussdb

docker镜像: http://docker.hub.com/ 这里我们使用docker hub镜像下载,该镜像下载较慢,可能有时访问不同,可以使用阿里云镜像下载

下载最新版本 3.0.0

docker pull enmotech/opengauss:3.0.0

opengauss与mysql语法区别 opengauss与gaussdb区别_数据库_02


执行docker images查看下我们的已有镜像。

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_03

启动容器

参考官网文档:环境变量

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_04

启动容器:docker run -dit --name opengauss -p5432:5432 --privileged=true --restart=always -e GS_PASSWORD=Gaussdb@123 -v /opengauss:/var/lib/opengauss enmotech/opengauss:3.0.0

连接数据库:$ gsql -d postgres -U gaussdb -W'Gaussdb@123' -h 192.168.137.103 -p5432

参数说明:
-dit: 后台交互式启动
--name: 指定容器启动名称
--privileged: 表示容器使用权限,true表示root权限。
--restart:表示当docker服务重启后,容器自动启动,如果不设置改参数,docker重启后该服务不会自启。
-e : 表示指定容器启动是需要的参数,具体有如下参数:
GS_PASSWORD:设置openGauss数据库的超级用户omm以及测试用户gaussdb的密码。如果要从容器外部(其它主机或者其它容器)连接则必须要输入密码。
GS_NODENAME:数据库节点名称,默认为gaussdb。
GS_USERNAME:数据库连接用户名,默认为gaussdb。
GS_PORT:数据库端口,默认为5432。
除了GS_PASSWORD外都可以使用默认值。若要设定非默认值,和GS_PASSWORD一样使用 -e 设定。

注意: gauss基于PostgreSQL,大部分情况可以参考pg数据库的资料,但不能解决问题的时候需要自己根据实际情况稍作变通,并参考官网文档说明解决。

opengauss与mysql语法区别 opengauss与gaussdb区别_docker_05

进入容器测试

gsql: gsql是openGauss提供在命令行下运行的数据库连接工具,可以通过此工具连接服务器并对其进行操作和维护,除了具备操作数据库的基本功能,gsql还提供了若干高级特性,便于用户使用。

opengauss与mysql语法区别 opengauss与gaussdb区别_docker_06


参考文档: https://docs.opengauss.org/zh/docs/3.0.0/docs/Toolreference/gsql.html

docker ps 查看容器启动进程。
#docker exec -it [容器ID/容器名称] /bin/bash
docker exec -it 6c75b8ae7119 /bin/bash
#切换用户
su - omm
#使用gsql命令进入命令行模式
gsql

1、示例:

[root@node103 ~]#
 [root@node103 ~]# docker exec -it 6c75b8ae7119 /bin/bash
 root@6c75b8ae7119:/#
 root@6c75b8ae7119:/# su - omm
 omm@6c75b8ae7119:~$ gsql
 gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr )
 Non-SSL connection (SSL connection is recommended when requiring high-security)
 Type “help” for help.omm=# help
 You are using gsql, the command-line interface to gaussdb.
 Type: \copyright for distribution terms #查询版权项
 \h for help with SQL commands #查询sql命令用法
 ? for help with gsql commands #查询gsql命令用法
 \g or terminate with semicolon to execute query #已\g或以分号结束以执行查询
 \q to quit #退出
 omm=#

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_07


opengauss与mysql语法区别 opengauss与gaussdb区别_数据库_08


常用的命令:

\l 列举目前的数据库

\du 列举角色

\c 切换数据库 如切到omm下:\c omm

\dn 列举schema

\db 列举tablespaces

\dt 列举table

\dv 列举view

\ds 列举sequences

对于命令行模式来说,没有使用\开头的则被认定为sql\

关于sql执行的帮助:
非命令,直接写sql不会有任何提示
每次写的sql会存储到buffer里
使用\g才会执行你已经写的sql,\g 后面跟字符串为保存执行结果的路径,加";"代表直接显示执行结果
执行sql以“;”区分条目,每次写的sql记得末尾加“;”
\p打印已经放置到buffer里的sql
\e 编辑已经放置到buffer里的sql
\r 清理已经放置到缓存区的sql,执行sql后buffer依然保持执行前的内容
使用\h 或者 \h后面直接加sql关键字,可以查询sql用法
授权时记得查看role的继承关系(可以使用grant快速将一个角色授权给另一个角色)

版本查询sql:
select version();

客户端工具测试

1.从openGauss开源社区下载对应平台的安装包。登录openGauss开源社区 https://opengauss.org/zh/download/ ,选择对应平台的最新安装包下载。对于个人开发者或非企业级环境,下载极简安装包(不安装OM等组件)即可。单击“下载”。

2.历史版本下载:https://opengauss.org/zh/download/archive/ 3.使用手册

opengauss与mysql语法区别 opengauss与gaussdb区别_gaussdb_09

gsql连接与使用方法

参考官网文档:gsql连接与使用方法

opengauss与mysql语法区别 opengauss与gaussdb区别_opengauss与mysql语法区别_10

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_11

语法

参考官网:语法

opengauss与mysql语法区别 opengauss与gaussdb区别_opengauss与mysql语法区别_12


常用sql语法

数据类型

官网:数据类型

opengauss与mysql语法区别 opengauss与gaussdb区别_docker_13


opengauss与mysql语法区别 opengauss与gaussdb区别_sql_14

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_15

opengauss与mysql语法区别 opengauss与gaussdb区别_数据库_16


opengauss与mysql语法区别 opengauss与gaussdb区别_opengauss与mysql语法区别_17


opengauss与mysql语法区别 opengauss与gaussdb区别_docker_18

opengauss与mysql语法区别 opengauss与gaussdb区别_opengauss与mysql语法区别_19


opengauss与mysql语法区别 opengauss与gaussdb区别_数据库_20


opengauss与mysql语法区别 opengauss与gaussdb区别_sql_21

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_22

opengauss与mysql语法区别 opengauss与gaussdb区别_gaussdb_23

简单数据管理

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_24

高级数据管理

opengauss与mysql语法区别 opengauss与gaussdb区别_sql_25

高级特性

opengauss与mysql语法区别 opengauss与gaussdb区别_数据库_26