GaussDB
GaussDB(DWS)产品基础知识
一、GaussDB(DWS)产品架构
基于Shared_Nothing软件逻辑架构,由多个拥有独立且互不共享CPU、内存、存储等系统资源的节点组成。在这样的系统架构中,业务数据被分散存储在多个物理节点上,数据分析任务被推送到数据所在位置就近执行,通过控制模块的协调,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。
高扩展:
开放架构,按需水平扩展:Shared_Nothing架构+独创的大规模集群通讯技术,可扩展到2048节点。
高可靠:
全组件HA,无单节点故障:集群的协调节点、数据节点等逻辑组件全HA设计。
高性能:
行列混存,极速查询分析:全并行计算,行列混存+向量化执行;并执行Bulk LOAD,数据极速入库。
易运维:
标准SQL,平滑应用迁移;融合大数据。
云服务:
华为云DWS服务:支持多租户,在线扩容,在线升级,资源按需单行伸缩等特性。
OM:提供日常运维、配置管理 (主备)
CM(Cluster Manager),即含CMServer 进程的特殊MPPDBServer,负责管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保整个系统的稳定运行。CM分为主CM和备CM。正常情况下,只由主CM提供GaussDB 200集群管理服务。当主CM发生故障的情况下,备CM会主动升为主CM提供GaussDB 200集群管理服务。(主备)
全局事务管理模块GTM(Global Transaction Manager):
即含GTM进程的特殊MPPDBServer,负责生成和维护全局事务ID、事务快照、时间戳等需要全局唯一的信息。GTM分为主GTM和备GTM。正常情况下, 只由主GTM提供全局事务管理服务。当主GTM发生故障的情况下,备GTM会主动升为主GTM提供服务。(主备)
Coordinator:负责提供外部应用接口、优化全局执行计划、向Datanode分发执行计
划,以及汇总、处理执行结果。
WLM:混合负载管理,防过载(主备)
Data Node:数据分布,多种形式存储数据操作执行(主、备DN同步数据期间,如果主DN突然故障不可用,备DN会升为主DN。在原主DN恢复前,新升为主的DN会将数据日志同步到从备DN。原主DN恢复后将成为备DN,并且会使用“从备DN”上的数据日志恢
复异常期间的数据。也就是说从备DN永远只作为从备使用,不会因为主DN或备DN故障而升级为主DN或备DN,从备只存放备DN故障时同步到从备的Xlog数据和数据通道复制产生的数据。)
GDS Loader:批量数据加载,并行加速(多实例)
具体查询流程如下:
1.用户通过应用程序发出查询本地数据的SQL请求到Coordinator。
2.Coordinator接收用户的SQL请求,分配服务进程,向GTM请求分配全局事务信息。
3.GTM接收到Coordinator的请求,返回全局事务信息给Coordinator。
4.Coordinator根据数据分布信息以及系统元信息,解析SQL为查询计划树,从查询计划树中提取可以发送到Datanode的执行步骤,封装成SQL语句或者子执行计划树,发送到Datanode执行。
5.Datanode接收到读取任务后,查询具体Storage上的本地数据块。
6.Datanode任务执行后,将执行结果返回给Coordinator。
7.Coordinator将查询结果通过应用程序返回给用户。
GaussDB 200数据存储流程与数据查询流程相近,请参考数据查询流程,此处不再介绍。
二、GaussDB A 产品介绍
2.1应用场景
适用于以下场景:
- 详单查询:具备PB级数据负载能力,通过内存分析技术满足海量数据边入库边查询要求,适用于安全、电信、金融、物联网等行业的详单查询业务。
- 数据仓库:具备百TB级数据支撑能力,可以高效处理百亿行多表连接查询,适用于操作数据存储ODS(Operational Data Store)、企业数据仓库EDW(Enterprise Data Warehouse)、数据集市DM(Data Mart)。
- 混合负载:基于海量数据查询统计分析能力与事务处理能力,行列混存技术同时满足联机事务处理OLTP(On-Line Transaction Processing)与联机分析处理OLAP(Online Analytical Processing)混合负载场景。
- 大数据分析:支持结构化数据PB级分析能力。分布式并行数据库集群满足PB级结构化大数据的分析能力。
2.2关键特性
全并行架构:最大化利用系统计算资源利用率,提升处理性能
- 高性能:行列混存+混合引擎
- 智能优化器:选择最优执行计划
- 安全性:全方位满足数据库安全需求(网络安全、认证、授权和控制、敏感数据、安全审计)
- 支持PostGIS:实现空间数据存储与处理,遵循OpenGIS规范
- SQL On HDFS:实现互联互通,且兼容标准SQL
- 统一分析:跨DC、跨组件、跨集群统一分析
- 特征值比对:多维分析GPU加速
- 多租户:提供可视化资源管理
- 弹性集群:支持多业务统一管理(逻辑集群)
- SQL自诊断:快速定位,自动识别,降低优化成本
- CN Retry:自动重试
- DataStudio:可视化SQL开发工具
华为云上数据仓库服务及应用实践
背景
趋势1:移动互联网时代,数据爆炸式增长,数据价值需要挖掘。
趋势2:企业IT向通用化、云化转型。
趋势3:企业数据持续加速上云,企业应用的加速上云,推动了数据加速上云。
DWS:华为云高性能企业级数据仓库服务
核心能力:
- 标准SQL,平滑应用迁移
- 开放架构,按需水平扩展
- 行列混存,极速查询分析
- 全组件HA,无单节点故障
- SQL on Anywhere
DWS vs RDS :海量数据高性能分析
对比项 |
OLTP |
OLAP |
用户 |
操作人员、低级管理人员 |
决策人员、高级管理人员 |
功能 |
日常操作处理 |
分析决策 |
DB设计 |
面向应用 |
面向主题 |
数据 |
当前的、最新的、细节的、二维的、 分立的 |
历史的、聚集的、多维的、集成的、 统一的 |
存取 |
读/写数十条记录 |
读上百万条记录 |
工作单位 |
简单的事务 |
复杂的查询 |
用户数 |
上千个 |
上百万个 |
DB大小 |
100MB~GB |
100GB~TB |
时间要求 |
具有实时性 |
对时间的要求不严格 |
主要应用 |
数据库 |
数据仓库 |
华为云DWS优势
- 高安全:获得欧洲权威安全标准认证,租户隔离保证数据隐私安全
- 高性能:万亿数据关联分析秒级响应
- 易使用:迁移工具支持线下数仓轻松迁移到云上,SQL智能优化
入库方式 |
数据源 |
说明 |
并行拉取 |
OBS、MRS(HDFS)、远端服务器 |
性能好,横向扩展 |
CDM |
数据库、NoSQL、文件系统、大数据平台 |
数据源丰富,操作简单 |
DIS |
流数据 |
准实时入库 |
第三方ETL |
数据库、NoSQL、文件系统、大数据平台 |
通过OBS中专,数据源丰富,数据转换能力强 |
- 高可靠:全节点HA,系统无单节点故障
- 生态丰富:兼容PG生态,支持多源数据库高效入库
- 易运维:自动弹性伸缩,对接CES监控集群各项指标
DBSS:为DWS保驾护航
数据泄露保护DLP:
- 敏感数据发现
- 动态数据脱敏
数据库防火墙DBF:
- SQL注入防雨
- 责权分离
- 漏洞检测防御
- 合规检查
- 脱库检测
数据库审计防护DAP:
- 数据库活动监控
- 合规报表
- 日志分析
华为云数仓GaussDB(DWS)集群部署与管理
集群网络规划
基本概念
概念 |
说明 |
管理节点 |
Management Node(MN),即GaussDB A集群的管理系统,提供统一的访问入口。FusionInsight Manager对部署在集群中的节点及服务进行集中管理。主要部署OMSServer。 |
控制节点 |
Control Node(CN),控制节点控制监控数据节点,并执行对集群接入用户的认证鉴权,存放认证鉴权数据。 GaussDB A的控制节点主要部署KrbServer、LdapServer等。 |
数据节点 |
Data Node(DN),执行管理节点发出的指示,上报任务状态、存储数据,以及执行数据节点的公共功能。 GaussDB A的数据节点主要部署MPPDBServer。 |
网络平面类型
GaussDB A整个系统网络划分为2个平面,即业务平面和管理平面,两个平面之间采用物理隔离的方式进行部署,保证业务、管理各自网络的安全性。
- 管理平面通过运维网络接入,提供系统管理和维护功能,主要用于集群的管理, 对外提供集群监控、配置、审计、用户管理等服务。
- 业务平面,主要用于集群内部数据处理的专用网络平面,此处的业务平面非客户的应用网络平面。
- 为确保业务平面的数据存储安全和数据库内部的数据处理性能达到最优,建议客户的业务应用统一接入管理平面。
- 当客户业务涉及大批量数据传输时可接入业务平面。
主备管理节点还支持设置外部管理网络的IP地址,用户可以通过外部管理网络进行集群管理。
组网方案
节点部署方案 |
组网规则 |
适用场景 |
管理节点和控制节点合并部署,数据节点单独部署 |
● 集群节点数超过200时,各节点划分到不同子网,各子网通过核心交换机三层互联,每个子网的节点数控制在200个以内,不同子网中 ● 节点数量请保持均衡。 ● 集群节点数低于200时,各节点部署在同一子网,集群内通过汇聚交换机二层互联。 |
● (推荐)节点数大于等于5节点的集群使用此场景 ● 此方案至少需要5个节点 |
管理节点、控制节点和数据节点合并部署 |
集群内节点部署在同一子网,集群内通过汇聚交换机二层互联。 |
● 节点数小于5的集群使用此场景 ● 此方案至少需要3个节点
说明:不推荐使用此场景。 ● 如节点数量满足需求,推荐将数据节点单独部署 ● 如节点数量不满足将数据节点单独部署的要求,必须使用此场景时,需要使用双平面组网方式。 |
学习日期:2021-4-21
集群部署
单 AZ 高可靠部署
- 对于每组实例,其主、备部署在不同的节点上。例如:GTM的主、备分别部署在不同的节点上。DN的主、备、从备部署在不同的节点上。
- 建议节点内存大于等于512G,每个节点部署4个DN。
- 低并发场景下,整个集群部署2~4个CN即可以满足使用要求。
- 建议GTM、CM部署在没有CN的节点上。如此部署,既减少某节点故障带来的损失,还可以避免集群运行压力集中在个别节点上。
- 安全环是集群组网的基本单元,普通安全环内包含至少3个服务器,各服务器的DN形成完备的主备关系。系统默认会根据Datanode进程数据目录的个数加1确定环节点数,也可以配置环节点列表和环节点数参数指定成环规则,建议使用小
环,环节点数不宜过大。
为保证负载均衡和资源的有效利用,在遵循上述原则的基础上,建议部署模式如下:
- 主GTM和备CMServer部署在同一个节点上,备GTM和主CMServer部署在同一个节点上。
- 根据需要在部分节点上部署CN。
双 AZ 容灾部署
采用双AZ部署,每个AZ单独部署一个集群,通过双集群容灾管理,实现数据高可用。其部署方案与单AZ高可靠部署一致,在部署完一套AZ集群后,再部署一套同构的AZ集群。
服务部署原则
GaussDB A集群由多种服务按照一定的逻辑架构组合而成,每个服务包含一个或多个角色,每个角色可以部署一个或多个实例。
- 服务:服务对外表现为集群提供的组件业务能力,集群中的每个组件对应一个服务名,提供一种服务。
- 角色:角色是服务的组成要素,每个服务由一个或多个角色组成,服务通过角色安装到节点(即服务器)上,保证服务正常运行。
- 实例:当一个服务的角色安装到节点上,即形成一个实例。每个服务有各自对应的角色实例。
各服务角色的内存要求和部署原则
服务名称 |
角色名称 |
内存最小要求 |
依赖关系 |
角色业务部署原则 |
OMSSe rver |
OMSServ er |
10GB |
- |
分别部署在两个管理节点上,主备配置。 |
LdapSe rver |
SlapdServ er |
500MB~ 1GB |
- |
考虑性能最优化,建议所有集群中LdapServer都与KrbServer部署在相同的节点上。 ●备份集群:LdapServer分别部署在两个控制节点上,两个均为分析集群的备用服 务。 ●分析集群:LdapServer分别部署在两个控制节点上,主备配置。 |
KrbServ er |
KerberosS erver |
3MB |
●KrbServer 依赖于LdapServe r ●KerberosS erver与KerberosA dmin关联 |
分别部署在两个控制节点上,负荷分担。 |
|
Kerberos Admin |
2MB |
|
分别部署在两个控制节点上,负荷分担。 |
(可选) MPPDB Monito r |
MonitorS erver |
20GB |
依赖于 MPPDB。 |
可选服务,用于MPPDB集群的监控与分析。 仅部署1个,建议部署在集群的管理节点上。 |
学习日期:2021-4-22
管理界面FI的基本功能
管理GaussDB(DWS)服务
- 使用场景
可以通过FusionInsight Manager对GaussDB(DWS)集群进行启动、停止和查询。
- 启动与关闭数据库集群
- 启动和停止数据库实例
- 状态查询、主备切换
- 进入FusionInsight Manager界面,单击“集群>服务”,可以查看GaussDB(DWS)管理的所有服务;单击MPPDB服务名称,可以管理MPPDB服务。
- 在服务状态子栏目,可以启动服务、停止服务;可以查看集群健康状态及MPPDB CPU使用率、DB大小等资源使用情况。
- 在“实例”子栏目,可以查询HCS DWS集群所有的物理节点及节点上的MPPDB服务。单击MPPDB Server角色名可以进入管理MPPDB实例界面;单击主机名,可以进入主机的监控可管理界面。
- 在服务“配置”子栏目,可以查询MPPDB服务的配置信息。
节点替换
- 首先登录GaussDB(DWS)集群,进行单节点卸载。
- 环境变量生效
Source /opt/huawei/Bigdata/mppdb/.mppdbgs_porfile
- 进行单节点卸载
Gs_uninstall --delete-data-L
- -L 只卸载本地节点。如果集群内某单节点做单节点卸载后,集群不能再做全量卸载。
- 卸载nodeagent
/opt/huawei/Bigdata/nodeagent/setup/uninstall.sh
- 配置新节点环节,被更换节点下电,新节点上电。
- 新增节点上与集群其他节点安装的OS为相同版本。
- 新增节点的IP、HostName、OS编码格式、磁盘分区与故障节点保持一致。
- FusionInsight界面修复:单击“主机”,选择新安装的节点,选择“更多>重装”选择集群修复。
- 在FusionInsight Manager登录界面修复:输入密码,点击确认。
- 节点替换成功。
集群扩容
- 何时进行扩容
随着业务量的增长,集群存储容量、计算能力或服务能力无法满足业务需求时,需要考虑对服务进行扩容。
- 扩容场景
- 扩容节点,即网集群中添加更多服务器。
- 添加服务实例,无论是全新添加服务还是为业务组件添加业务实例,在FusionInsight Manager上的操作均为添加服务实例。
添加新节点至集群
- 登录FusionInsight Manager,选择“集群>主机”,单击“添加”。根据扩容规划,填写需要增加的主机IP,输入ROOT密码,单击“查找”,勾选需要添加的主机。
- 根据扩容规则,填写参数。
- 根据扩容规则,配置需要扩容服务的参数。单击“下一步”。对照扩容规划内容,确认信息无误,单击“提交”。
添加组件实例-添加服务
- 选择“集群>服务”,单击“添加服务”。
- 将服务添加到已有节点。选择“仅添加服务”。
- 根据扩容规划,选择需要添加的服务。单击“下一步”。勾选节点,配置需要扩容服务的参数,确认信息无误,单击“提交”。
添加组件实例
- 选择“集群>服务”。单击某一服务,例如“MPPDB”。
- 选择“实例”页签,单击“添加”,勾选需要增加的实例。
- 配置需要扩容服务的参数。
- 对照扩容规则内容,确认信息无误后,单击“提交”。
- 添加实例后,部分服务的配置状态可能由于新加实例配置而出现“配置状态”处于“过期”状态。此时需要重启相关配置“过去”状态服务,进行配置同步生效。
扩容后需要做数据重分布
重分布类型 |
特点 |
支持业务 |
参数 |
慢速重分布 |
速度慢,占用额外磁盘空间少 |
Select |
|
快速只读重分布 |
速度快,额外占用磁盘空间多,只读模式 |
Select |
--fast-redis --redis-mode=read-only |
快速在线重分布(推荐) |
速度快,额外占用磁盘空间多,在线模式 |
DML,DDL(drop table、truncate table、alter table truncate partition) |
--fast-redis --redis-mode=insert |
1、在FusionInsight Manager首页,选择“集群>服务>MPPDB>实例”并选择原集群中的某一节点,记录IP地址;
2、使用PuTTY工具,登录上述IP所在主机。执行命令:
Su -omm
Source/opt/huawei/Bigdata/mppdb/.mppdbgs_profile
/opt/huawei/Bigdata/FusionInsight_MPPDB_V100R002C70U20/FusionInsight-MPPDB-2.7.0/MPPDB/script/gs_expand -t redistribute --fast-redis --redis-mode=read-only --parallel-jobs=12
扩容重分布时间评估
集群扩容分为两步:扩容过程和数据重分布过程。
时间评估如下:
- 扩容过程
扩容过程耗时 ≈ 集群中所有数据库的对象(表、视图、索引)数量之和/3000
- 重分布
重分布时间和数据量大小有关,随数据量线性上升。
重分布耗时 ≈ 总数据量/400G/节点数
学习日期:2021-4-23
DAYU架构及部署规划总结(ZOOM会议)
DAYU简介
智能数据湖平台(DAYU)是针对企业数字化运营诉求提供的数据全生命周期管理、具有智能数据管理能力的一站式治理运营平台,包含数据集成、规范设计、数据开发、数据质量监控、数据资产管理、数据服务等功能,支持行业知识库智能化建设、支持大数据存储、大数据计算分析引擎等数据底座,帮助企业快速构建从数据接入到数据分析的端到端智能数据系统,消除数据孤岛,统一数据标准,加快数据变现,实现数字化转型。
Cdm简介
云数据迁移(Cloud Data Migration)提供同构/异构数据源之间批量数据迁移服务,帮助您实现数据自由流程。支持自建和云上的文件系统,关系数据库,数据仓库,NoSQL,大数据云服务,对象存储等数据源。
CDM服务基于分布式计算框架,利用并行化处理技术,支持用户稳定高校地对海量数据进行移动,实现不停服数据迁移,快速构建所需的数据架构。
DLF简介
数据胡工厂服务(Data Lake Factory,简称数据开发模块)是华为云大数据重要的平台产品,它可管理多种大数据服务,提供一站式的大数据开发环境、全托管的大数据调度能力,极大降低用户使用大数据的门槛,帮助用户快速构建大数据处理中心。
使用数据开发模块,用户可进行数据管理、数据集成、脚本开发、作业开发、作业调度、运维监控等操作,轻松完成整个数据的处理分析流程。
DLG简介
数据质量:
数据全生命周期管控,数据处理全流程质量监控,异常事件实时通知。
数据资产:
提供企业级的元数据管理,理清信息资产。通过数据地图,实现数据资产的数据血源和数据全景可视,提供数据智能搜索和运营监控。
数据服务:
标准化的数据服务平台,提供一站式数据服务开发、测试部署能力,实现数据服务敏捷相应,降低数据获取速度,提升数据消费体验和效率,最终实现数据资产的变现。
规范设计:
作为数据治理的一个核心模块,承担数据治理过程中的数据加工并业务化的功能,提供智能数据规划、自定义主题数据模型、统一数据标准、可视化数据建模、标注数据标签等功能,有利于改善数据质量,有效支撑经营决策。
DAYU主要功能介绍
- 数据质量:支持与规范设计联动,支持在数据开发链路中集成。
- 数据资产:统一数据资产管理,支持API集成。
- 数据安全:统一数据安全管理。
网络区域介绍
区域名称 |
说明 |
管理区 |
对应External_OM平面,部署平台公共管理组件,如LVS、Nginx、HAproxy、DNS、API网关。 |
DMZ区 |
对应DMZ_Service平面,部署DLF,CDM,DLG Console,DAYUManager组件,提供DAYU服务页面访问。 页面请求通过路由策略转发到管理区HAproxy组件,由HAproxy分发到DLF Service组件。 |
POD区 |
对应部署DAYU(DLF,CDM,DLG)Service类组件,包括DLF Nginx、DLF ServiceManager、DLF Operation、DLF Alarm、DLF Scheduler、DLF MySQL、CDM-Controller、CDM-Mysql、DLG后端服务等,供DAYU服务调用。 POD区管理组件通过管理专线访问管理区,通过内大网External_Relay_Network与DMZ区互通。 |
网络设计规划
完成《华为云Stack 8.0.2集成设计套件》中《02华为云Stack 8.0.2 LLD模板(Region Type I)03》 -3.1IP&VLAN sheet页,高级服务订阅相关平面的高阶服务公共平面、公共LB、EI服务的网络平面规划。
核对工程信息——校验云服务插件包——配置工程参数——上传和校验软件包——安装前检查——安装组件
下载模板,根据参数来源填写参数。
工具对接训练
Gsql
基本功能
- 连接数据库: 详细操作请参见远程连接数据库。
- 执行SQL语句:支持交互式地键入并执行SQL语句,也可以执行一个文件中指定的
SQL语句。
- 执行元命令:元命令可以帮助管理员查看数据库对象的信息、查询缓存区信息、
格式化SQL输出结果,以及连接到新的数据库等。
特性名称 |
描述
|
变量
|
gsql提供类似于Linux的shell命令的变量特性,可以使用gsql的元命令 \set设置一个变量,格式如下: \set varname value 要删除一个变量请使用如下方式: \unset varname 说明 ● 变量只是简单的名称/值对,这里的值可以是任意长度。 ● 变量名称必须由字母(包括非拉丁字母)、数字和下划线组成,且对大小写 敏感。 ● 如果使用\set varname的格式(不带第二个参数),则只是设置这个变量而 没有给变量赋值。 ● 可以使用不带参数的\set来显示所有变量的值。 |
SQL代换 |
利用gsql的变量特性,可以将常用的SQL语句设置为变量,以简化操 作。 |
自定义提示 符 |
gsql使用的提示符支持用户自定义。可以通过修改gsql预留的三个变量 PROMPT1、PROMPT2、PROMPT3来改变提示符。 这三个变量的值可以用户自定义,也可以使用gsql预定义的值。 |
客户端操作 历史记录 |
gsql支持客户端操作历史记录,当客户端连接时指定“-r”参数,此功 能被打开。可以通过\set设置记录历史的条数,例如,\set HISTSIZE 50,将记录历史的条数设置为50,\set HISTSIZE 0,不记录历史。 说明 ● 客户端操作历史记录条数默认设置为32条,最多支持记录500条。当客户端交互式输入包含中文字符时,只支持UTF-8 的编码环境。 ● 出于安全考虑,将包含PASSWORD、IDENTIFIED敏感词的记录识别为敏感信息,不会记录到历史信息中,即不能通过上下翻回显。 |
使用方法
步骤1 使用gsql连接到GaussDB A服务器。
gsql工具使用-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机
名、-p参数指定端口号信息。
示例1,使用omm用户连接到本机postgres数据库的25308端口。
gsql -d postgres -p 25308
示例2,使用jack用户连接到远程主机postgres数据库的25308端口。
gsql -h 10.180.123.163 -d postgres -U jack -p 25308
示例3,参数postgres和omm不属于任何选项时,分别被解释成了数据库名和用户名。
gsql postgres omm -p 25308
步骤2 执行SQL语句。
以创建数据库human_staff为例。
CREATE DATABASE human_staff;
CREATE DATABASE
通常,输入的命令行在遇到分号的时候结束。如果输入的命令行没有错误,结果就会
输出到屏幕上。
步骤3 执行gsql元命令。
常用参数
参数 |
参数说明 |
取值范围 |
-c, --command=CO MMAND |
声明gsql要执行一条字符串命令然后退出。 |
- |
-d, --dbname=DBNA ME |
指定想要连接的数据库名称。
|
字符串。
|
-f, --file=FILENAME |
使用文件作为命令源而不是交互式输入。 gsql将在处理完文件后结束。如果FILENAME是-(连字符),则从标准输入读取。 |
绝对路径或相对路 径,且满足操作系 统路径命名规则。 |
-l, --list |
列出所有可用的数据库,然后退出。 |
- |
-v, --set, --variable=NAME =VALUE |
设置gsql变量NAME为VALUE。 |
- |
-X, --no-gsqlrc |
不读取启动文件(系统范围的gsqlrc或者用户的~/.gsqlrc都不读取)。 说明 启动文件默认为~/.gsqlrc,或通过PSQLRC环境变量指定。 |
- |
-1 ("one"), -- singletransaction |
当gsql使用-f选项执行脚本时,会在脚本的开头和结尾分别加上START TRANSACTION/COMMIT用以把整个脚本当作一个事务执行。这将保证该脚本完全执行成功,或者脚本无效。 说明 如果脚本中已经使用了START TRANSACTION, COMMIT,ROLLBACK,则该选项无效。 |
- |
-?, --help |
显示关于gsql命令行参数的帮助信息然后退出。 |
- |
-V, --version |
打印gsql版本信息然后退出。 |
- |
常见问题处理
连接性能问题
- 开启了log_hostname,但是配置了错误的DNS导致的连接性能问题。
在连接上数据库,通过“show log_hostname”语句,检查数据库中是否开启了
log_hostname参数。如果开启了相关参数,那么数据库内核会通过DNS反查客户端所在机器的主机名。这时如果数据库CN所在主机配置了不正确的/不可达的DNS服务器,那么会
导致数据库建立连接过程较慢。
- 数据库内核执行初始化语句较慢导致的性能问题。
此种情况定位较难,可以尝试使用Linux的跟踪命令:strace。
strace gsql -U MyUserName -W MyPassWord -d postgres -h 127.0.0.1 -p 23508 -r -c '\q'
此时便会在屏幕上打印出数据库的连接过程。比如较长时间停留在下面的操作
上:
sendto(3, "Q\0\0\0\25SELECT VERSION()\0", 22, MSG_NOSIGNAL, NULL, 0) = 22
poll([{fd=3, events=POLLIN|POLLERR}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
此时便可以确定是数据库执行"SELECT VERSION()"语句较慢。
在连接上数据库后,便可以通过执行“explain performance select version()”语
句来确定初始化语句执行较慢的原因。
另外还有一种场景不太常见:由于数据库CN所在机器的磁盘满或故障,此时所查
询等受影响,无法进行用户认证,导致连接过程挂起,表现为假死。解决此问题
清理数据库CN的数据盘空间便可。
- TCP连接创建较慢问题。
此问题可以参考上面的初始化语句较慢排查的做法,通过strace跟踪,如果长时间
停留在:
connect(3, {sa_family=AF_FILE, path="/home/test/tmp/gaussdb_llt1/.s.PGSQL.61052"}, 110) = 0
或者
connect(3, {sa_family=AF_INET, sin_port=htons(61052), sin_addr=inet_addr("127.0.0.1")}, 16) = -1
EINPROGRESS (Operation now in progress)
那么说明客户端与数据库端建立物理连接过慢,此时应当检查网络是否存在不稳定、网络吞吐量太大的问题。
创建连接故障
- gsql: could not connect to server: No route to host
此问题一般是指定了不可达的地址或者端口导致的。请检查-h参数与-p参数是否
添加正确。
- gsql: FATAL: Invalid username/password,login denied.
此问题一般是输入了错误的用户名和密码导致的,请联系数据库管理员,确认用户名和 密码的正确性。
- The "libpq.so" loaded mismatch the version of gsql, please check it.
此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的,请通过“ldd gsql”命令确认当前加载的libpq.so的版本,并通过修改LD_LIBRARY_PATH环境变量来加 载正确的libpq.so。
- gsql: symbol lookup error: xxx/gsql: ñnšžfinžš symbol: libpqVersionString
此问题是由于环境中使用的libpq.so的版本与gsql的版本不匹配导致的(也有可能是环 境中存在PostgreSQL的libpq.so),请通过“ldd gsql”命令确认当前加载的libpq.so的版 本,并通过修改LD_LIBRARY_PATH环境变量来加载正确的libpq.so。
- gsql: connect to server failed: Connection timed out
Is the server running on host "xx.xxx.xxx.xxx" and accepting TCP/IP
connections on port xxxx?
此问题是由于网络连接故障造成。请检查客户端与数据库服务器间的网络连接。如果发 现从客户端无法PING到数据库服务器端,则说明网络连接出现故障。请联系网络管理 人员排查解决。
- gsql: FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
此问题是由于用户不具备访问该数据库的权限,可以使用如下方法解决。
- 使用管理员用户dbadmin连接数据库。
gsql -d postgres -U dbadmin -p 8000
- 赋予该用户访问数据库的权限。
GRANT CONNECT ON DATABASE postgres TO user1;
- gsql: FATAL: sorry, too many clients already,active/non-active: 197/3.
此问题是由于系统连接数量超过了最大连接数量。请联系数据库DBA进行会话连接数管理,释放无用会话。
select datid,pid,state from pg_stat_activity;
datid | pid | state
-------+-----------------+--------
13205 | 139834762094352 | active
13205 | 139834759993104 | idle
(2 rows)
其中pid的值即为该会话的线程ID。根据线程ID结束会话。
SELECT PG_TERMINATE_BACKEND(139834759993104);
显示类似如下信息,表示结束会话成功。
PG_TERMINATE_BACKEND
----------------------
t
(1 row)
查看会话连接数
描述 |
命令 |
查看指定用户的会话连接数上限 |
执行如下命令查看连接到指定用户USER1的会话连接数上限。其中-1表示没有对用户user1设置连接数的限制。 SELECT ROLNAME,ROLCONNLIMIT FROM PG_ROLES WHERE ROLNAME='user1'; rolname | rolconnlimit ---------+-------------- user1 | -1 (1 row) |
查看指定用户已使用的会话连接数。 |
执行如下命令查看指定用户USER1已使用的会话连接数。其中,1表示USER1已使用的会话连接数。 SELECT COUNT(*) FROM V$SESSION WHERE USERNAME='user1'; count ------- 1 (1 row) |
查看指定数据库的会话连接数上限。 |
执行如下命令查看连接到指定数据库postgres的会话连接数上限。其中-1表示没有对数据库postgres设置连接数的限制。 SELECT DATNAME,DATCONNLIMIT FROM PG_DATABASE WHERE DATNAME='postgres'; datname | datconnlimit ----------+-------------- postgres | -1 (1 row) |
查看指定数据库已使用的会话连接数。 |
执行如下命令查看指定数据库postgres上已使用的会话连接数。其中,1表示数据库postgres上已使用的会话连接数。 SELECT COUNT(*) FROM PG_STAT_ACTIVITY WHERE DATNAME='postgres'; count ------- 1 (1 row) |
查看所有用户已使用会话连接数。 |
执行如下命令查看所有用户已使用的会话连接数。 SELECT COUNT(*) FROM V$SESSION; count ------- 10 (1 row) |
- gsql: wait xxx.xxx.xxx.xxx:xxxx timeout expired
gsql在向数据库发起连接的时候,会有5分钟超时机制,如果在这个超时时间内, 数 据库未能正常的对客户端请求进行校验和身份认证,那么gsql会退出当前会话的连接 过程,并报出如上错误。
一般来说,此问题是由于连接时使用的-h参数及-p参数指定的连接主机及端口有误(即 错误信息中的xxx部分),导致通信故障;极少数情况是网络故障导致。要排除此问题, 请检查数据库的主机名及端口是否正确。
- gsql: could not receive data from server: Connection reset by peer.
同时,检查CN日志中出现类似如下日志“ FATAL: cipher file "/data/coordinator/ server.key.cipher" has group or world access”,一般是由于数据目录或部分关键文件的权 限被误操作篡改导致。请参照其他正常实例下的相关文件权限,修改回来便可。
- gsql: FATAL: GSS authentication method is not allowed because XXXX user password is not disabled.
目标CN的pg_hba.conf里配置了当前客户端IP使用"gss"方式来做认证,该认证算法不 支持用作客户端的身份认证,请修改到"sha256"后再试。配置方法见5.8.1.2 配置文件 参考 。
其他故障
- 出现因“总线错误”(Bus error)导致的core dump或异常退出
一般情况下出现此种问题,是进程运行过程中加载的共享动态库(在Linux为.so文件) 变化;或者进程二进制文件本身出现变化,导致操作系统加载机器的执行码或者加载依 赖库的入口发生变化,操作系统出于保护目的将进程杀死,产生core dump文件。
解决此问题,重试便可。同时请尽可能避免在升级等运维操作过程中,在集群内部运行 业务程序,避免升级时因替换文件产生此问题。
Data Studio
简介
Data Studio是一款GUI工具,可以通过Data Studio连接数据库,执行并调试SQL语句和存储过程。Data Studio支持GaussDB A的基本特性,为数据库开发人员提供图形界面,显著提高构建应用程序的效率,并简化数据库开发及应用开发任务。
功能
Data Studio主要为数据库开发人员提供以下功能:
- 浏览数据库对象。
- 创建和管理数据库对象(例如:数据库、用户、表、索引)。
- 编辑和执行PL/SQL语句。
- 导入和导出表数据。
- 调试SQL语句和存储过程。
Database Manager
简介
Database Manager是一款Web化集群数据库运维管理工具,用户可以通过Database Manager管理统一管理企业内部的多个GaussDB A数据库系统。
功能
Database Manager主要为数据库开发人员提供以下功能:
- 支持导入集群。
- 支持用户管理和配置管理。
- 支持集群管理,包括启动、停止、重启集群,启动监控、停止监控集群、集群备份恢复。
- 监控集群性能、节点性能和实例性能。
- 支持告警上报及管理。
- 支持故障诊断功能,能有效的检测集群数据库的问题。
Migration Tool
简介
Migration Tool是一款运行在Linux或Windows操作系统上的命令行工具,致力于向客户提供简单、快速、可靠的应用程序sql脚本迁移服务,通过内置的语法迁移逻辑解析源数据库应用程序sql脚本,并迁移为适用于GaussDB A数据库的应用程序sql脚本。
Migration Tool不需要连接数据库,可在离线模式下实现零停机迁移,迁移过程中会显示迁移过程状态,并用日志记录操作过程中发生的错误,便于快速定位问题。
功能
Migration Tool支持迁移Teradata和Oracle至GaussDB A,目前支持迁移的对象有:
- Oracle和Teradata支持的通用对象:SQL模式,SQL查询
- 仅Oracle支持的对象:PL/SQL
- 仅Teradata支持的对象:包含BTEQ和SQL_LANG脚本的Perl文件
- 点赞
- 收藏
- 关注作者
评论(0)