docker安装华为gaussdb数据库
- 基本概念
- docker安装gaussdb
- 拉取镜像
- 启动容器
- 进入容器测试
- 客户端工具测试
- gsql连接与使用方法
- 语法
- 数据类型
- 简单数据管理
- 高级数据管理
- 高级特性
基本概念
openGauss是一款关系型数据库管理系统(RDBMS)。关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。
openGauss的数据库节点负责存储数据,其存储介质也是磁盘。逻辑视角下,可以看到数据库节点上对象包含表空间、数据库、数据文件、表、数据块。对象之间的关。
数据库(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
执行docker images查看下我们的已有镜像。
启动容器
参考官网文档:环境变量
启动容器: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数据库的资料,但不能解决问题的时候需要自己根据实际情况稍作变通,并参考官网文档说明解决。
进入容器测试
gsql: gsql是openGauss提供在命令行下运行的数据库连接工具,可以通过此工具连接服务器并对其进行操作和维护,除了具备操作数据库的基本功能,gsql还提供了若干高级特性,便于用户使用。
参考文档: 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=#
常用的命令:
\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.使用手册:
gsql连接与使用方法
参考官网文档:gsql连接与使用方法
语法
参考官网:语法
数据类型
官网:数据类型
简单数据管理
高级数据管理
高级特性