• [技术干货] sql 索引失效的可能原因
    1、添加无效的子查询或者or 等语句;2、 cpu_index_tuple_cost 特别大3、索引被禁用了unusable;4、不能使用优化器了enable_indexscan
  • [用户实践] 【250222】笔记记录
    https://lab.huaweicloud.com/experimentalStudy_db-sql-operation_1746_0_1740190734875 下载gsql客户端,并解压wget https://dbs-download.obs.cn-north-1.myhuaweicloud.com/GaussDB/1642684986086/GaussDB_opengauss_client_tools.zipunzip GaussDB_opengauss_client_tools.zipcd /root/GaussDB_opengauss_client_tools/Euler2.5_X86_64cp GaussDB-Kernel-V500R001C20-EULER-64bit-gsql.tar.gz /optcd /opt/tar -zxvf GaussDB-Kernel-V500R001C20-EULER-64bit-gsql.tar.gzsource gsql_env.sh使用gsql客户端连接数据库,并创建数据库及对应用户gsql -h xxx.xx.xx.x -d postgres -p 8000 -U root -W yourpassword -r数据类型CREATE TABLE int_type_t1 ( IT_COL1 TINYINT ) ;INSERT INTO int_type_t1 VALUES(10);SELECT * FROM int_type_t1;CREATE TABLE decimal_type_t1 ( DT_COL1 DECIMAL(10,4) );INSERT INTO decimal_type_t1 VALUES(123456.122331);SELECT * FROM decimal_type_t1;CREATE TABLE smallserial_type_tab(a SMALLSERIAL);INSERT INTO smallserial_type_tab VALUES(default); INSERT INTO smallserial_type_tab VALUES(default);SELECT * FROM smallserial_type_tab;CREATE TABLE float_type_t2 ( FT_COL1 INTEGER, FT_COL2 FLOAT4, FT_COL3 FLOAT8, FT_COL4 FLOAT(3), FT_COL5 BINARY_DOUBLE, FT_COL6 DECIMAL(10,4), FT_COL7 INTEGER(6,3) ) ;数据库对象 表CREATE TABLE bank_card( b_number NCHAR(30) PRIMARY KEY, b_type NCHAR(20),b_c_id INT NOT NULL);CREATE TEMPORARY TABLE bank_card2(b_number NCHAR(30) PRIMARY KEY, b_type NCHAR(20),b_c_id INT NOT NULL);ALTER TABLE bank_card RENAME TO bank_card1;ALTER TABLE bank_card1 ADD full_masks INTEGER;ALTER TABLE bank_card1 ADD CONSTRAINT ck_bank_card CHECK(b_c_id>0); ALTER TABLE bank_card1 ADD CONSTRAINT uk_bank_card UNIQUE(full_masks);ALTER TABLE bank_card1 DROP full_masks;INSERT INTO bank_card1(b_number, b_type, b_c_id) VALUES ('6222021302020000001','Credit Card', 0);DROP TABLE IF EXISTS bank_card1;视图--创建表 CREATE TABLE bank_card( b_number NCHAR(30) PRIMARY KEY, b_type NCHAR(20),b_c_id INT NOT NULL); --基于表创建视图 CREATE VIEW v_bank_card as select b_number, b_c_id from bank_card;ALTER VIEW v_bank_card RENAME TO v_bank_card_new;DROP VIEW v_bank_card_new;索引CREATE INDEX idx_b_type ON bank_card (b_type);\di idx_b_typeALTER INDEX idx_b_type RENAME TO idx_b_type_new;DROP INDEX idx_b_type_new;五 函数与操作符步骤1 字符处理函数SELECT instr( 'abcdabcdabcd', 'bcd', 2, 2 );SELECT overlay('hello' placing 'world' FROM 2 for 3 );SELECT position('ing' in 'string');SELECT substring_inner('adcde', 2,3);SELECT replace('abcdefabcdef', 'cd', 'XXX');SELECT substring('Thomas' FROM 2 for 3); --删除表client DROP TABLE IF EXISTS client; --创建表client CREATE TABLE client ( c_id INT PRIMARY KEY, c_name NVARCHAR2(100) NOT NULL, c_mail NCHAR(30) UNIQUE, c_id_card NCHAR(20) UNIQUE NOT NULL, c_phone NCHAR(20) UNIQUE NOT NULL, c_password NCHAR(20) NOT NULL );--启动数据库后执行 gsql -h xxx.xxx.xxx.xxx -U root -d postgres -p 8000 -r\i client.sql \i bank_card.sql \i insurance.sql    
  • [GaussTech] HCCDE-GaussDB实验局培训课堂问题Q&A
    问题章节问题描述回复上课老师GaussDB软件体系架构1. 集中式部署的时候主节点可读可写,备节点可读?是的徐宜良GaussDB软件体系架构2. PG_CLOG占用磁盘空间太大,怎么清理?怎么设置最大占用磁盘空间大小?clog非常的小,一个字节可以保存4个事务的状态,一个page可以存放32768个事务状态,有vacuum后台定时清理不需要的clog文件。不需要手工设置。徐宜良GaussDB软件体系架构3. 线程在GaussDB上怎么查看?查询pg_stat_activity视图徐宜良GaussDB软件体系架构4. 如果无锁,在高并发下怎么保证一致性?通过原子操作方式徐宜良GaussDB软件体系架构5. 为什么paxos复制效率比较高?而且在PPT没有看到他复制原理,也是基于多数派?是多数派,paxos允许并行处理,高并发时性能更好徐宜良GaussDB软件体系架构6. CN存储业务数据么?不保存徐宜良GaussDB软件体系架构7. templatem在哪个版本有的?505.1徐宜良GaussDB软件体系架构8. Paxos和quorum如何选择?推荐用哪个?新版本推荐使用paxos徐宜良GaussDB软件体系架构9. HCCDE-GaussDB基于哪个版本内核?505.1徐宜良GaussDB软件体系架构10. ALT如何实现应用SQL在故障后转发到新节点执行?在jdbc驱动里会自动判断新主,自动连接到新主执行sql徐宜良GaussDB软件体系架构11. ustore应该存在数据库默认限制?新版本中默认的存储引擎是ustore徐宜良GaussDB软件体系架构12. pg内存划分本地内存和共享内存,和GaussDB内存划分有什么关系?两者原理类似徐宜良GaussDB软件体系架构13. 不同数据压缩率是算法差异一起的么,还是可以参数控制?考虑性能和压缩比的平衡,不同类型的数据会采用不同的压缩算法。不同数据会自动采用不同的压缩算法,不需要参数控制。徐宜良GaussDB数据库规划设计10. HCS下发集中式或分布式实例是通过参数控制吗?是在部署的时候配置的吗?不是参数控制,在部署时候选好,就不能改。敖宏伟GaussDB数据库规划设计11. dorado双集群RPO=0,中间第二步有个增量日志存储同步复制,意思是需要等备集群redo日志也落盘后,主集群事务才提交吗?是的,要等备机群的日志同步过去,才会提交敖宏伟GaussDB数据库规划设计12. dorado双集群RPO=0,中间第二步有个增量日志存储同步复制,意思是需要等备集群redo日志也落盘后,主集群事务才提交吗?是的,要等备机群的日志同步过去,才会提交敖宏伟GaussDB数据库规划设计13. 集中式里面有单机版,主备版,一主一备一日志版;分布式里面有独立部署,混合部署,分别应该怎么推荐选型?这个在课程上讲了。集中式里,单机主要用于测试环境或低成本容灾站点部署。一主一备一日志,主要用于有ECS的HCS标准形态,日志节点可以节省一个副本,但是牺牲了一主两备的备机读特性。分布式,主推混部,独立部署在HCS不会使用,成本太大,性能提升不是很明显,目前只有公有云在使用,属于存量运维。敖宏伟GaussDB数据库规划设计14.云底座实际只能构建两个物理机房,请问如何保证一主两备集群在物理机房下RPO=0?云底座的业务AZ最多可以扩容到64个,他的管理面只能构建在两个物理机房。GaussDB单集群拉远部署,主要是业务az的拉远,目前要求拉远到三个逻az或物理az。如果业务az实际上只有两个物理机房,可以在其中一个机房再逻辑隔离出一个。RPO=0,是靠paxos协议保证,比如4副本,az1有两副本,az2两副本,az3部署etcd。一个sql落盘,必须多数派落盘,4副本多数派就i是3,这样保证 az1,az2都至少有一份最新数据,来实现机房级故障,数据不丢。敖宏伟GaussDB数据库规划设计金融案例3.银行有没有用公有云GaussDB的场景?一般哪些业务推荐用公有云?国内银行没有公有云,银监会不允许。郭凤鸣GaussDB数据库内核原理-SQL引擎4.如果是项目上遇到这种大量不支持下推的语法,应当如何改造。拆SQL周兆琦GaussDB数据库内核原理-SQL引擎5.多列统计信息是不是只能手动做?不是, 可以自动收集。周兆琦GaussDB数据库内核原理-SQL引擎6.如果历史上执行计划很好,然后变坏了,使用sql patch可以将执行计划指定回原来好的计划么?可以。周兆琦GaussDB数据库内核原理-SQL引擎7.没有创建位图索引,为什么会走位图索引?需要位图索引。周兆琦GaussDB数据库内核原理-SQL引擎8.GaussDB里bitmapscan和indexscan有什么区别,优化器怎么选择? 基于选择率。周兆琦GaussDB安全管理1.异常访问检测现在是做到什么程度了呢?能检查哪些异常,内核做的还是管控?当前异常访问检测通过dbmind实现,支持的异常检测类型很多,例如CPU使用率异常、内存异常、IO异常等,其中异常访问检测主要包括暴力破解、扫描攻击、越权检测。dbmind功能不内核里,是单独部署在管控面。李建峰GaussDB安全管理2.同名schema的owner可以修改为其他用户吗?修改了owner之后,原先创建的对象相关的权限会有变化吗?可以修改,修改之后对原对象没有影响,在模式下新创建的owner为当前用户了。李建峰GaussDB安全管理3.关于行级访问控制,行级控制管理员可以看到所有数据吗?没有行级控制管理员,表的属主或系统管理员可以创建行级控制策略。系统管理员是不受行级访问策略影响。李建峰GaussDB安全管理6.关于透明加密密钥管理,秘钥轮转怎么控制的,是定时任务吗?需要用户手动触发密钥轮转。用户可以通过创建定时任务实现定时轮转。李建峰
  • [技术解读] 停止GaussDB节点
    停止GaussDB节点操作场景GaussDB支持对节点进行手动停止操作,此功能会停止节点上所有数据库的组件进程,不会直接关闭节点所在虚拟机/物理机。约束限制停止节点可能会降低集群承受风险的能力,请谨慎操作。停止节点操作与规格变更、备份、重置密码、重启实例、删除实例等互斥,即执行停止节点时无法执行备份恢复等操作,备份恢复等操作时也无法执行停止节点操作。停止节点前会关闭节点的HA,直到执行启动节点或者手动打开HA。关闭HA后,节点的状态将不会被监控。当停止的节点中包含大于或等于对应DN分片1/2副本数时,可能导致实例异常以及单个节点启动失败。停止节点后,节点仍然能够在后台登录,但是所有数据库相关操作都无法执行。分布式实例需要保证至少有一个CN节点正常,否则会导致实例业务不可用。停止节点后,无法修改实例参数。停止节点时间过长会触发告警,可以选择启动GaussDB节点恢复实例。停止节点后,所有资源正常计费。操作步骤登录管理控制台。单击管理控制台左上角,选择区域和项目。在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。在“实例管理”页面,选择指定的实例,单击实例的名称,进入“基本信息”页面。在“节点列表”模块,单击“操作”列的“停止节点”。图1 停止节点在“停止节点”弹框中,输入“stop”,单击“确定”,停止节点。稍后刷新实例,查看停止结果。如果节点状态为“已停止”,说明节点停止成功。
  • [技术解读] GaussDB AI大模型在智能运维场景的应用
    在数字化转型的浪潮中,数据库作为企业数据管理的核心,扮演着至关重要的角色。随着业务规模的扩大和数据量的激增,数据库运维的复杂性也随之增加。传统运维方法在确保数据高可用性、系统稳定性、性能优化及故障快速响应方面,面临着诸多挑战,往往需要投入大量人力和时间成本,且效果依赖于运维人员的个人经验和直觉。在此背景下,智能运维技术,特别是基于大模型的解决方案,为数据库运维带来了新的突破。GaussDB AI大模型能够对数据库的运行状态进行实时监控和智能分析,识别出异常状态并检测可能的故障点,克服传统运维中依赖人工经验、响应速度慢、效率低下等问题,帮助企业更好地应对日益增长的数据挑战,确保业务的连续性和数据的安全性,为数字化转型提供坚实支撑。一、GaussDB AI大模型整体设计思路大语言模型(LLM,Large Language Model)是基于海量的通用语料进行数据训练而成的超深度学习神经网络,包含数十亿甚乃至更多参数,模型规模可以达到数百GB甚至更大,通过对大规模数据集进行训练,展现出强大的表达和学习能力。大语言模型在数据库运维领域的应用,具有对运维知识理解、分析流程编排以及工具调用的能力及优势。GaussDB基于盘古大模型构建数据库从咨询、开发、优化、运维等阶段的各种AI应用,如图1所示。图1 GaussDB AI能力整体方案在咨询阶段,通过LLM与知识库的结合,构建了数据库垂域的专业知识问答系统。在运维阶段,利用大模型智能体的计划、编排、工具执行能力,实现了自动故障根因分析和定位。下面我们将围绕GaussDB智能问答和运维智能体能力展开介绍。二、GaussDB 智能问答和运维智能体GaussDB智能问答随着数据库产品的功能增强,技术能力的加深,不仅拓展了技术资料的广度和深度,相应地提高了学习成本,也提升了对数据库用户(DBA、开发人员、运维人员)使用数据库的门槛。GaussDB基于RAG(Retrieval-Augmented Generation,检索增强生成)和LLM技术构建的智能知识问答能力,通过整合产品文档、社区资料、使用手册和运维手册等私域资料,运用自然语言处理和知识检索技术,GaussDB智能问答助手能理解并解答用户关于GaussDB的各类问题,帮助用户快速找到解决方案,在安装配置、性能优化、操作使用以及故障排查方面,提供精确有效、交互式的回答。在技术实现上,RAG框架通过结合传统的信息检索方法与先进的生成模型,在用户提问时,先从私域部署的知识库中检索相关资料,再通过LLM生成流畅、准确的回答。这种设计既结合了LLM的通用性、灵活性以及对用户意图的理解力,又能将知识库作为大模型的“外脑”,解决了LLM存在的幻觉、信息过时、可解释性不足、专业知识缺乏的问题,确保用户获得的信息既准确又符合实际的操作需求。图2 GaussDB智能问答流程GaussDB智能问答主要关键特性如下:文档知识提取通过NLP(Natural Language Processing,自然语言处理)技术构建一系列文档处理工具,针对Markdown数据进行分块切分,以实现高效的知识管理。此外,还支持用户文档处理成向量知识以及文本知识。知识召回当用户提出问题时,智能问答系统首先会进行向量检索以及文本检索,在向量检索环节,使用一个重排模型对召回的结果进行排序,来确保与用户问题语义最为相关的知识,汇总到大模型后完成总结输出。数据库领域知识微调从技术文档、开发文档构建GaussDB专用语料库,并对底座LLM进行SFT微调训练,实现对GaussDB专有名词和场景的知识注入。为了避免训练过程中模型的遗忘,也适量加入通用语料知识进行混合训练微调,可以提高模型在回答数据库专业的准确率。GaussDB运维智能体在运维阶段,我们同样积极探索将已有的智能运维工具以及当前的大模型技术相结合,建立更加智能化、自治化的数据库故障分析与自愈框架。图3 GaussDB故障运维智能体如图3所示,GaussDB当前的故障运维智能体框架,主要依托大模型的多步对话、规划、反思以及工具调用的能力,形成能够自治并完成复杂故障分析任务的智能体应用。GaussDB以LLM为决策大脑,按照案例知识召回、故障分析计划编排、故障分析执行、故障根因总结等步骤,结合运维工具集进行工作,其工作流程如图4所示。图4 故障运维智能体工作流程工具能力构建GaussDB当前通过AI算法构建了系列异常检测、慢SQL诊断、集群故障根因诊断等关键运维能力。通过restful/Dubbo 接口与智能体无缝对接,确保了高效的数据交互与调用。通过构建运维工具API集合,在智能体分析故障流程中,实现不同故障运维场景下大模型能够调用合适的工具。运维案例记忆通过资深运维专家总结标准作业流程SOP,记录特定故障场景下需要检测的事项信息步骤以及故障判断准则,为智能体引入专家经验,构建故障运维案例库。此部分知识可以储存在数据库当中,留待智能体检索使用,而且在实践过程中,会对现网运维常见的CPU使用率、长事务、集群状态等TOP场景优先进行了支持。故障分析计划编排根据故障现象,通过相似度搜索,故障智能体在运维案例记忆中召回相关运维案例,组装成提示词,输入到大模型进行分析流程编排。对于不在预设TOP场景的故障类型,则通过大模型会根据现有案例以及运维知识,推理生成规划,形成对未知故障的学习能力。故障分析执行在计划编排步骤得到的故障分析计划下,重新组装提示词输入到大模型进行工具调用执行的任务,可以利用LLM的工具调用Function call能力,从工具集当中选择各个步骤的所需的工具参数,以及对应的工具接口API,生成的结果可以通过restful/Dubbo等接口协议进行执行,并且获取接口调用结果。对于需要多步执行的流程,上一步接口调用的结果,有可能需要拼接到LLM的下一步输入。故障定位总结与报告生成经过完整的计划编排以及分析执行后,这些步骤的结果将会汇总输入到LLM输出根因定位总结报告。在用户界面上,展示完整的分析流程以及对应的根因定位总结报告。通过以上流程,运维智能体可以减少运维人员分析故障的复杂度,节省故障定位时间,同时能够直观展示分析流程以及总结报告。三、总结与展望本文介绍了GaussDB AI大模型技术在数据库运维的前沿技术探索与创新实践。通过利用大模型的编排与运维知识理解能力,结合数据库现有的运维工具,构建了知识问答、故障分析定位等一系列智能化应用。同时,在实践过程中,也认识到单纯依赖大模型自身的知识进行复杂问题解决是不现实的。因此,通过引入知识库以及运维案例专家知识,可以更好地引导大模型生成符合事实的准确答案。综上,GaussDB在AI大模型技术的加持下,通过整合内外部知识、优化运维工具与增强数据库管理能力,构建了一个高效、智能、全面的数据库运维体系,为数据库运维的未来开辟了新的道路。
  • [技术干货] GaussDB密码策略与账户锁定
    GaussDB密码策略与账户锁定目录:修改密码密码策略GUC参数修改密码策略锁定用户自动锁定手动锁定修改密码普通用户修改自己的登录口令需要知道旧密码:ALTER USER joe IDENTIFIED BY 'newpassword' REPLACE 'oldpassword';管理员可以直接修改普通用户登录口令:ALTER USER joe IDENTIFIED BY 'password';如果用户口令中包含$等特殊字符,在终端中登录时需要带上单引号。gsql -p5432 -d tpcc -Ujoe -W'Huawei00#$abc'密码策略GUC参数与密码策略相关的GUC参数主要有如下:查看密码策略参数:gaussdb=# show password_policy; password_policy ----------------- 1 (1 row) gaussdb=# show password_min_length; password_min_length --------------------- 8 (1 row) gaussdb=# show password_min_uppercase; password_min_uppercase ------------------------ 0 (1 row) gaussdb=# show password_min_digital; password_min_digital ---------------------- 0 (1 row) gaussdb=# show password_min_special; password_min_special ---------------------- 0 (1 row) gaussdb=# show password_effect_time; password_effect_time ---------------------- 0 (1 row) gaussdb=# show password_reuse_time; password_reuse_time --------------------- 0 (1 row) gaussdb=# show password_encryption_type; password_encryption_type -------------------------- 2 (1 row) gaussdb=# show password_lock_time; password_lock_time -------------------- 1d (1 row) gaussdb=# show failed_login_attempts; failed_login_attempts ----------------------- 10 (1 row)修改密码策略方法一:通过DWS管理控制台图形界面修改GaussDB管理控制台 => 集群管理 => 集群详情 => 参数修改 => 参数列表方法二:使用gs_guc命令修改gs_guc reload -N all -I all -c "password_policy=1" gs_guc reload -N all -I all -c "password_encryption_type=2" gs_guc reload -N all -I all -c "password_min_length=8" gs_guc reload -N all -I all -c "password_min_uppercase=1" gs_guc reload -N all -I all -c "password_min_digital=1" gs_guc reload -N all -I all -c "password_min_special=1" gs_guc reload -N all -I all -c "password_effect_time=60" gs_guc reload -N all -I all -c "password_reuse_time=90" gs_guc reload -N all -I all -c "password_lock_time=1" gs_guc reload -N all -I all -c "failed_login_attempts=10"修改后无需重启实例即可生效。锁定用户自动锁定为了保证帐户安全,如果用户输入密码次数超过一定次数(failed_login_attempts),系统将自动锁定该帐户,默认值为10。次数设置越小越安全,但是在使用过程中会带来不便。当帐户被锁定时间超过设定值(password_lock_time),则当前帐户自动解锁,默认值为1天。时间设置越长越安全,但是在使用过程中会带来不便。手动锁定若管理员发现某帐户被盗、非法访问等异常情况,可手动锁定该帐户。alter user joe account lock;1当管理员认为帐户恢复正常后,可手动解锁该帐户。alter user joe account unlock;查看账户是否被锁定以及被锁定的日期:select username,account_status,lock_date,expiry_date, created,last_login,password_versions,authentication_type from adm_users;系统视图adm_users中的字段含义:account_status:NULL表示该用户是拥有最高权限的初始系统管理员(rdsAdmin),0表示用户状态正常,1表示该用户由于登录失败次数超过阈值被锁定了一段时间,2表示该用户被管理员锁定。lock_date:默认显示用户的创建日期(即created字段的值)。如果该用户被锁定过则显示账户被锁定的日期。初始系统管理员该字段为NULL。当用户帐号被锁定时,尝试登录到数据库会收到下面的报错:gsql: ERROR: The account has been locked.References【1】https://support.huaweicloud.com/intl/zh-cn/devg-910-dws/dws_04_0063.html【2】https://docs.mogdb.io/zh/mogdb/v5.0/2-managing-users-and-their-permissions#设置安全策略原文链接:https://blog.csdn.net/Sebastien23/article/details/145503378
  • [问题求助] 趋势看板的指标不显示
    前提条件满足,但是趋势看板不显示任何东西白名单参数趋势看板不显示任务东西 
  • [技术解读] GaussDB 使用gsql连接
    gsql是GaussDB提供的在命令行下运行的数据库连接工具。此工具除了具备操作数据库的基本功能,还提供了若干高级特性,便于用户使用。本节只介绍如何使用gsql连接数据库,关于gsql使用方法的更多信息请参考《工具参考》中“客户端工具 > gsql”。注意事项缺省情况下,客户端连接数据库后处于空闲状态时会根据GUC参数session_timeout的默认值自动断开连接。如果要关闭超时设置,设置GUC参数session_timeout为0即可。前提条件已联系管理员获取连接信息。远程连接数据库完成远程连接配置,请联系管理员处理。在客户端机器上,上传客户端工具包并配置gsql的执行环境变量。登录客户端机器。创建“/tmp/tools”目录(“/tmp/tools”目录仅为示例,也可创建其他目录)。mkdir /tmp/tools获取软件安装包中的“GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gz”上传到“/tmp/tools”路径下。说明:软件包相对位置为安装时所放位置,根据实际情况填写。不同的操作系统,工具包文件名称会有差异。请根据实际的操作系统类型选择对应的工具包。解压文件。cd /tmp/toolstar -zxvf GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gz设置环境变量。打开“~/.bashrc”文件。vi ~/.bashrc在其中输入如下内容后,使用“:wq!”命令保存并退出。export PATH=/tmp/tools/bin:$PATH export LD_LIBRARY_PATH=/tmp/tools/lib:$LD_LIBRARY_PATH使环境变量配置生效。source ~/.bashrc连接数据库。数据库安装完成后,会默认生成名称为postgres的数据库。gsql -d postgres -h 10.10.0.11 -U jack -p 8000 Password for user jack:postgres为需要连接的数据库名称,10.10.0.11为CN所在的服务器IP地址,jack为登录数据库的用户名,8000为CN的端口号,上述示例中,连接的服务器的IP和端口也可以替换成DN服务器IP和端口。gsql支持使用域名代替IP地址。在多CN数据库实例环境中,当需要跳过故障CN节点,可以使用gsql连接到正常状态的CN节点。以数据库实例三个CN节点的IP:port是10.10.0.11:8000,10.10.0.12:8002,10.10.0.13:8004为例,执行以下命令。gsql -d postgres -h 10.10.0.11,10.10.0.12,10.10.0.13 -U jack -p 8000,8002,8004gsql会按从前往后的顺序依次连接三个IP:port,如果当前连接的IP:port不是正常状态的CN节点,则尝试连接下一个IP:port,直到成功连接到正常状态的CN节点为止。可通过设置PGTARGETSESSIONATTRS环境变量的值来选择连接到不同类型的节点,更多信息请参见《工具参考》中“客户端工具 > gsql”章节host参数的说明。以下命令演示了使用IPv6地址连接数据库:gsql -d postgres -h 2407:c182:14f0:594:er63:49c5:493q:594c -U jack -p 8000说明:上述示例中,jack用户为数据库初始化用户创建的普通用户。默认禁止使用数据库初始化用户进行远程连接数据库,开启集群内部kerberos认证时,允许初始化用户在集群内部进行远程连接。
  • [问题求助] gaussdb无法执行存储过程
    创建存储过程没问题,但是在执行存储过程中抛出异常。
  • [技术解读] GaussDB用户权限设置
    给用户直接授予某对象的权限,请参见GRANT。将Schema中的表或者视图对象授权给其他用户或角色时,需要将表或视图所属Schema的USAGE权限同时授予该用户或角色。否则用户或角色将只能看到这些对象的名称,并不能实际进行对象访问。例如,下面示例将Schema tpcds的权限授予用户joe后,将表tpcds.web_returns的select权限授予用户joe。gaussdb=# GRANT USAGE ON SCHEMA tpcds TO joe; gaussdb=# GRANT SELECT ON TABLE tpcds.web_returns to joe;给用户指定角色,使用户继承角色所拥有的对象权限。创建角色。新建一个角色lily,同时给角色指定系统权限CREATEDB:gaussdb=# CREATE ROLE lily WITH CREATEDB PASSWORD "********";给角色赋予对象权限,请参见GRANT。例如,将模式tpcds的权限授予角色lily后,将表tpcds.web_returns的select权限授予角色lily。gaussdb=# GRANT USAGE ON SCHEMA tpcds TO lily; gaussdb=# GRANT SELECT ON TABLE tpcds.web_returns to lily;将角色的权限授予用户。gaussdb=# GRANT lily to joe;说明:当将角色的权限授予用户时,角色的属性并不会传递到用户。回收用户权限,请参见REVOKE。
  • [技术解读] GaussDB创建、修改和删除Schema
    创建Schema,请参见CREATE SCHEMA。默认初始用户和系统管理员可以创建Schema,其他用户需要具备数据库的CREATE权限才可以在该数据库中创建Schema,赋权方式请参见GRANT中将数据库的访问权限赋予指定的用户或角色中的语法。更改Schema名称或者所有者,请参见ALTER SCHEMA。Schema所有者可以更改Schema。删除Schema及其对象,请参见DROP SCHEMA。Schema所有者可以删除Schema。在Schema内创建表,请以schema_name.table_name格式创建表。不指定schema_name时,对象默认创建到搜索路径中的第一个Schema内。查看Schema所有者,请对系统表PG_NAMESPACE和系统视图GS_USER执行如下关联查询。语句中的schema_name请替换为实际要查找的Schema名称。gaussdb=# SELECT s.nspname,u.usename AS nspowner FROM pg_namespace s, gs_user u WHERE nspname='schema_name' AND s.nspowner = u.usesysid;查看所有Schema的列表,请查询PG_NAMESPACE系统表。gaussdb=# SELECT * FROM pg_namespace;查看属于某Schema下的表列表,请查询系统视图PG_TABLES。例如,以下查询会返回Schema PG_CATALOG中的表列表。gaussdb=# SELECT distinct(tablename),schemaname from pg_tables where schemaname = 'pg_catalog';
  • [技术解读] GaussDB创建、修改和删除角色
    非三权分立时,只有系统管理员和具有CREATEROLE属性的用户才能创建、修改或删除角色。三权分立下,只有初始用户和具有CREATEROLE属性的用户才能创建、修改或删除角色。创建角色,请参见CREATE ROLE。在现有角色中添加或删除用户,请参见ALTER ROLE。删除角色,请参见DROP ROLE。DROP ROLE只会删除角色,并不会删除角色中的成员用户账户。
  • [技术解读] GaussDB用户
    使用CREATE USER和ALTER USER可以创建和管理数据库用户。数据库集群包含一个或多个数据库。用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的数据库。非三权分立下,GaussDB用户账户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户账户只能由初始用户和安全管理员创建。在用户登录GaussDB时会对其进行身份验证。用户可以拥有数据库和数据库对象(例如表),并且可以向用户和角色授予对这些对象的权限以控制谁可以访问哪一个对象。除系统管理员外,具有CREATEDB属性的用户可以创建数据库并授予对这些数据库的权限。创建、修改和删除用户创建用户,请使用SQL语句CREATE USER。例如:创建用户joe,并设置用户拥有CREATEDB属性。gaussdb=# CREATE USER joe WITH CREATEDB PASSWORD "********"; CREATE ROLE创建系统管理员,请使用带有SYSADMIN选项的CREATE USER语句 。删除现有用户,请参见DROP USER。更改用户账户(例如,重命名用户或更改密码),请参见ALTER USER。查看用户列表,请查询视图GS_USER。gaussdb=# SELECT * FROM gs_user; 查看用户属性,请查询系统表PG_AUTHID。gaussdb=# SELECT * FROM pg_authid; 永久用户GaussDB提供永久用户方案:创建具有PERSISTENCE属性的永久用户,具有PERSISTENCE属性的用户能够使用service_reserved_connections通道连接数据库。说明:service_reserved_connections为带有persistence属性预留的最少连接数,不建议设置过大。gaussdb=# CREATE USER user_persistence WITH PERSISTENCE IDENTIFIED BY "********";只允许初始用户创建、修改和删除具有PERSISTENCE属性的永久用户。
  • [技术解读] GaussDB默认权限机制
    数据库对象创建后,进行对象创建的用户就是该对象的所有者。集群安装后默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。GaussDB支持以下的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、CREATE、CONNECT、EXECUTE、USAGE、ALTER、DROP、COMMENT、INDEX和VACUUM。不同的权限与不同的对象类型关联。有关各权限的详细信息,请参见GRANT。要撤销已经授予的权限,请参见REVOKE。对象所有者的权限(例如ALTER、DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隐式拥有的,即只要拥有对象就可以执行对象所有者的这些隐式权限。对象所有者可以撤销自己的普通权限(SELECT、INSERT、UPDATE、DELETE),例如,使表对自己以及其他人只读,系统管理员用户除外。系统表和系统视图要么只对系统管理员可见,要么对所有用户可见。标识了需要系统管理员权限的系统表和视图只有系统管理员可以查询。有关信息,请参见系统表和系统视图。数据库提供对象隔离的特性,对象隔离特性开启时,用户只能查看有权限访问的对象(表、视图、字段、函数),系统管理员不受影响。有关信息,请参见ALTER DATABASE。不建议用户修改系统表和系统视图的权限。
  • [技术解读] GaussDB相关概念
    数据库数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。表空间在GaussDB中,表空间是一个目录,集群中可以存在多个表空间,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅起到了物理隔离的作用,其管理功能依赖于文件系统。模式GaussDB的模式是对数据库做逻辑分割。所有的数据库对象都建立在模式下面。GaussDB的模式和用户是弱绑定,弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。用户和角色GaussDB使用用户和角色控制对数据库的访问。根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户,一个用户唯一对应一个角色。在GaussDB中角色和用户之间的区别只在于角色默认是没有LOGIN权限的。在GaussDB中可以使用角色叠加来更灵活地进行管理。事务管理在事务管理上,GaussDB采取了MVCC(多版本并发控制)结合两阶段锁的方式,其特点是读写之间不阻塞。GaussDB的astore存储引擎将历史版本数据和当前元组的版本放在了一起。GaussDB的astore存储引擎没有回滚段的概念,但是为了定期清除历史版本数据,GaussDB的astore存储引擎引入了VACUUM线程。一般情况下,除非用户要做性能调优,否则不用特别关注VACUUM线程。GaussDB的ustore存储引擎是将历史版本数据统一存放到undo回滚段里,由undo回收线程统一清理历史版本数据。此外,GaussDB对于单语句查询(没有使用BEGIN等语句显示启动事务块)是自动提交事务的。
总条数:1539 到第
上滑加载中