• [技术解读] GaussDB提供了以下类型的系统表和系统视图
    GaussDB提供了以下类型的系统表和系统视图查看系统表除了创建的表以外,数据库还包含很多系统表。这些系统表包含集群安装信息以及GaussDB上运行的各种查询和进程的信息。可以通过查询系统表来获取有关数据库的信息。“系统表和系统视图”中每个表的说明指出了表是对所有用户可见还是只对初始化用户可见。以初始化用户身份登录才能查询只对初始化用户可见的表。GaussDB提供了以下类型的系统表和系统视图:兼容PostgreSQL的系统表和系统视图 这类系统表和系统视图具有PG前缀。GaussDB内核新增的系统表和系统视图 这类系统表和系统视图具有GS前缀。实现Oracle兼容的系统表和系统视图 这类系统表和视图具有ALL、DBA、USER或PV前缀。查看数据库中包含的表在public Schema下新建以下表格。gaussdb=# CREATE TABLE public.search_table_t1(a int) distribute by hash(a); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t2(b int) distribute by hash(b); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t3(c int) distribute by hash(c); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t4(d int) distribute by hash(d); CREATE TABLE gaussdb=# CREATE TABLE public.search_table_t5(e int) distribute by hash(e); CREATE TABLE在PG_TABLES系统表中查看public Schema中包含的前缀为search_table的表。 gaussdb=# SELECT distinct(tablename) FROM pg_tables WHERE SCHEMANAME = 'public' AND TABLENAME LIKE 'search_table%';结果如下: tablename ----------------- search_table_t1 search_table_t2 search_table_t3 search_table_t4 search_table_t5 (5 rows)查看数据库用户通过PG_USER可以查看数据库中所有用户的列表,还可以查看用户ID(USESYSID)和用户权限。SELECT * FROM pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valbegin | valuntil | respool | parent | spacelimit | useconfig | nodegroup | tempspacelimit | spillspacelimit ---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+------ -------+------------+-----------+-----------+----------------+----------------- roach | 10 | t | t | t | t | ******** | | | default_pool | 0 | | | | | (1 row)查看和停止正在运行的查询语句 通过视图PG_STAT_ACTIVITY可以查看正在运行的查询语句。方法如下:设置参数track_activities为on。SET track_activities = on;当此参数为on时,数据库系统才会获取当前活动查询的运行信息。查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例。SELECT datname, usename, state,pid FROM pg_stat_activity; datname | usename | state | pid ----------+---------+--------+----------------- testdb | Ruby | active | 140298793514752 testdb | Ruby | active | 140298718004992 testdb | Ruby | idle | 140298650908416 testdb | Ruby | idle | 140298625742592 testdb | omm | active | 140298575406848 (5 rows)如果state字段显示为idle,则表明此连接处于空闲,等待用户输入命令。如果仅需要查看非空闲的查询语句,则使用如下命令查看:SELECT datname, usename, state, pid FROM pg_stat_activity WHERE state != 'idle';若需要取消运行时间过长的查询,通过PG_TERMINATE_BACKEND函数,根据线程ID(即2中查询结果的pid字段)结束会话,请执行如下命令。SELECT PG_TERMINATE_BACKEND(140298793514752);显示如下信息,表示结束会话成功。PG_TERMINATE_BACKEND ---------------------- t (1 row)显示如下信息,表示用户执行了结束当前会话的操作。FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command说明:gsql客户端使用PG_TERMINATE_BACKEND函数结束当前正在执行会话的后台线程时,如果当前的用户是初始用户,客户端不会退出而是自动重连,即返回“The connection to the server was lost. Attempting reset: Succeeded.”。否则客户端会重连失败,即返回“The connection to the server was lost. Attempting reset: Failed.”。这是因为只有初始用户可以免密登录,普通用户不能免密登录,从而重连失败。 对于使用PG_TERMINATE_BACKEND函数结束非活跃的后台线程时。如果打开了线程池,此时空闲的会话没有线程ID,无法结束会话。非线程池模式下,结束的会话不会自动重连。
  • GaussDB技术锦集重启GaussDB节点
    GaussDB技术锦集重启GaussDB节点操作场景GaussDB实例节点状态为非正常状态时,可通过执行重启节点操作尝试将节点状态恢复正常。当实例节点状态为正常状态时,也可执行重启节点操作。重启过程中,节点不可用。注意事项当数据库在以下操作过程中,可以执行重启节点操作: 备份恢复失败 按需转包周期中 流容灾主实例容灾中 流容灾主实例日志保持中 流容灾灾备实例演练中 流容灾灾备实例容灾中 流灾备实例升主完成 重启后节点会自动释放内存中的缓存,请在业务低谷期进行重启,避免对高峰期业务造成影响。 重启节点操作目前只支持集中式版实例。 重启主节点后,会发生主备节点倒换。操作步骤登录管理控制台。 单击管理控制台左上角的,选择区域和项目。 在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。 单击目标实例名称,进入实例的“基本信息”页面。 在“节点列表”模块,单击“重启节点”,确认重启节点信息后,输入“reboot ”,单击“确定”。“重启节点”操作下发成功后,节点“运行状态”为“节点重启中”。稍后刷新实例基本信息,查看节点重启结果。如果节点运行状态为“正常”,说明节点重启成功。
  • GaussDB锦集启动GaussDB节点
    GaussDB锦集启动GaussDB节点操作场景GaussDB支持在停止节点后,手动重新启动节点。注意事项仅支持启动节点状态是“已停止”的实例。 启动节点操作与磁盘扩容、规格变更、备份、重置密码、重启实例、删除实例等互斥,即执行启动节点时无法执行备份恢复等操作,备份恢复时也无法执行启动节点操作。 启动节点后,实例可能处理主备分布不均衡状态,需要联系运维评估是否需要执行主备均衡操作。 当DN分片内停止状态的节点数量超过分片副本数的一半时,可能导致单个节点启动失败。操作步骤登录管理控制台。 单击管理控制台左上角的,选择区域和项目。 在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。 在“实例管理”页面,选择指定的实例,单击实例的名称,进入“基本信息”页面。 在“节点列表”模块,单击“操作”列的“启动节点”。在“启动节点”弹框,输入“start”,单击“确定”,启动节点。 稍后刷新实例,查看启动结果。如果节点状态为“正常”,说明节点启动成功。
  • [问题求助] gs_dump支持多个IP吗
    gs_dump在命令中可以写多个IP吗(主机和备机)?是否支持和gs_loader一样自动选择主节点
  • 启动GaussDB实例
    GaussDB大揭秘,启动GaussDB实例操作场景GaussDB支持在停止数据库实例后,手动重新开启实例。注意事项仅支持启动实例状态是“已停止”的实例。 启动实例过程中不支持磁盘扩容、规格变更、备份、重置密码、重启实例、删除实例等操作。 当DN分片内停止状态的节点数量超过分片副本数的一半时,可能导致实例异常,建议停止所有节点后启动实例。操作步骤登录管理控制台。 单击管理控制台左上角的,选择区域和项目。 在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。 在“实例管理”页面,选择目标实例,单击“操作”列的“更多 > 启动实例”。 在启动实例弹框,单击“确定”,启动实例。 启动实例稍后刷新实例列表,查看启动结果。如果实例状态为“正常”,说明实例启动成功。
  • 设置GaussDB实例安全组规则
    设置GaussDB实例安全组规则操作场景安全组是一个逻辑上的分组,为同一个虚拟私有云内具有相同安全保护需求,并相互信任的弹性云服务器和GaussDB实例提供访问策略。如果账号已经申请创建时支持不指定安全组的白名单,则不需要执行本章节,而且在实例详情页也不会有内网安全组信息。为了保障数据库的安全性和稳定性,在使用GaussDB实例之前,您需要设置安全组,开通需访问数据库的IP地址和端口。内网连接GaussDB实例时,设置安全组分为以下两种情况: ECS与GaussDB实例在相同安全组时,默认ECS与GaussDB实例互通,无需设置安全组规则。 ECS与GaussDB实例在不同安全组时,需要为GaussDB和ECS分别设置安全组规则。 设置GaussDB安全组规则:为GaussDB所在安全组配置相应的入方向规则。 设置ECS安全组规则:安全组默认规则为出方向上数据报文全部放行,此时,无需对ECS配置安全组规则。当在ECS所在安全组为非默认安全组且出方向规则非全放通时,需要为ECS所在安全组配置相应的出方向规则。 通过弹性公网IP连接实例时,需要为GaussDB所在安全组配置相应的入方向规则。 本节主要介绍如何为GaussDB实例设置相应的入方向规则。关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。注意事项因为安全组的默认规则是在出方向上的数据报文全部放行,同一个安全组内的弹性云服务器和GaussDB实例可互相访问。安全组创建后,您可以在安全组中定义各种访问规则,当GaussDB实例加入该安全组后,即受到这些访问规则的保护。默认情况下,一个租户可以创建500条安全组规则。 建议一个安全组内的安全组规则不超过50条。 当需要从安全组外访问安全组内的GaussDB实例时,需要为安全组添加相应的入方向规则。 所有鲲鹏云服务器规格不支持配置不连续端口。 如果您在鲲鹏云服务器中添加安全组规则时,使用了不连续端口号,那么除了该条规则不会生效,该规则后的其他规则也不会生效。比如:您先配置了安全组规则A(不连续端口号22,24),再配置了下一条安全规则B(独立端口号9096),则安全组规则A和B均不会生效。出方向规则通常不适用于数据库实例。仅在数据库实例充当客户端时,出方向规则才适用。数据库实例位于VPC(虚拟私有云 Virtual Private Cloud)中但不可公开访问,则您还可以使用VPN连接。创建分布式版实例时,如果需要修改内网安全组,请确保入方向规则TCP协议端口包含:40000-60480,20050,5000-5001,2379-2380,6000,6500, - ( + 100)。(例如设置的数据库端口为8000,则安全组中需要包含8000-8100)。 创建集中式版实例时,如果需要修改内网安全组,请确保入方向规则TCP协议端口包含:20050,5000-5001,2379-2380,6000,6500, - ( + 100)。(例如设置的数据库端口为8000,则安全组中需要包含8000-8100)。操作步骤登录管理控制台。 单击管理控制台左上角的,选择区域和项目。 在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。 在“实例管理”页面,选择目标实例,单击实例名称,进入实例的“基本信息”页面。 设置安全组规则。 在“网络信息”模块,单击安全组名称,进入安全组页面。 点击放大 在“入方向规则”子页签下单击“添加规则”,在“添加入方向规则”弹出框中填写安全组信息,单击“确定”。 单击“+”可以依次增加多条入方向规则。
  • [技术解读] 创建GaussDB数据库用户
    创建GaussDB数据库用户操作场景创建云数据库GaussDB实例时,系统默认同步创建root用户,您可根据业务需要,添加其他用户。您可通过以下方式创建数据库用户: 通过DAS创建数据库用户 通过SQL语句创建数据库用户 约束限制 仅支持集中式版V2.0-8.100.0及以上版本的实例。通过DAS创建数据库用户登录管理控制台。 单击管理控制台左上角的,选择区域和项目。 在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。 在“实例管理”页面,选择需要登录的目标数据库,单击操作列表中的“登录”,进入数据管理服务实例登录界面。 可以在“实例管理”页面,单击目标实例名称,进入实例的“基本信息”页面,在页面右上角,单击“登录”,进入数据管理服务实例登录界面。正确输入数据库用户名和密码,单击“登录”,即可登录到数据库。 在界面上方选择“SQL操作 > SQL查询”。 执行以下命令创建数据库用户。 create user 账号名;通过SQL语句创建数据库用户 您也可以通过CREATE USER创建数据库用户
  • [技术解读] 创建GaussDB数据库
    创建GaussDB数据库操作场景云数据库GaussDB实例创建成功后,您可根据业务需要,创建更多数据库。创建数据库时,需要遵循相关设计规范建议,详情请参见开发设计建议。您可通过以下方式创建数据库:通过DAS创建数据库 通过SQL语句创建数据库 通过DAS创建数据库 登录管理控制台。 单击管理控制台左上角的,选择区域和项目。 在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。 在“实例管理”页面,选择需要登录的目标数据库,单击操作列表中的“登录”,进入数据管理服务实例登录界面。 可以在“实例管理”页面,单击目标实例名称,进入实例的“基本信息”页面,在页面右上角,单击“登录”,进入数据管理服务实例登录界面。在“自定义登录”页签,选择需要登录的节点,正确输入数据库用户名和密码,单击“测试连接”。测试连接通过后,单击“登录”,即可登录到数据库。 创建数据库。 在首页数据库列表栏单击“新建数据库”。在弹窗中填写数据库名称、字符集、Template等信息,单击“确定”。 您也可以在界面上方选择“SQL操作 > SQL查询”。执行以下命令创建数据库。 create database 数据库名;
  • [技术解读] GaussDB 使用gs_loader工具导入数据
    GaussDB 使用gs_loader工具导入数据操作场景对于copy to导出的文件,可以使用gs_loader工具进行数据导入。gs_loader将控制文件支持的语法转换为\COPY语法,然后利用已有的\COPY功能,做主要数据导入工作,同时gs_loader将\COPY结果记录到日志中。注意事项gs_loader工具当前不支持M-Compatibility数据库。 使用gs_loader前请确保gs_loader版本与gsql版本、数据库版本保持一致。 gs_loader当前仅支持集中式版。 gs_loader导入过程中,不需要转码场景下,单行数据(包含tuple的元数据,以下均包含)小于1GB-1B;转码场景下单行数据小于256MB-1B,对以下转码场景进行了特殊处理:UTF-8 -> GB18030/GB18030_2022的限制为小于512MB-1B,UTF-8 -> GBK的限制为小于1GB-1B。 建议单个导入文件的大小不超过1GB。gs_loader对单个导入文件的大小没有限制,但是对大文件数据的导入通常会比较耗时,因此建议在使用的过程中,对较大的数据文件进行切分,启动多个gs_loader进程以append的形式向表中写入数据(如果有truncate的需要则需要单独执行truncate,而不是将truncate写入控制文件中)。在CPU资源足够时,这种做法可以有效地提升导入速率。 迁移准备 准备弹性云服务器或可通过公网访问GaussDB。 通过弹性云服务器连接GaussDB数据库实例,需要创建一台弹性云服务器。 创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“购买弹性云服务器”和“登录弹性云服务器”。通过公网地址连接GaussDB数据库实例,需具备以下条件。 先对GaussDB数据库实例绑定公网地址,如何绑定公网地址,请参见绑定弹性公网IP。 保证本地设备可以访问GaussDB数据库实例绑定的公网地址。 在准备的弹性云服务器或可访问GaussDB数据库的设备上,安装gsql客户端,并连接到GaussDB数据库实例。详情请参见使用gsql连接数据库。操作步骤创建控制文件,准备数据文件。 创建控制文件,将数据导入到loader_tbl表中,如'/tmp/data/loader.ctl'。其中WHEN要求每行第二个字符为','。LOAD DATA truncate into table loader_tbl WHEN (2:2) = ',' fields terminated by ',' trailing nullcols ( id integer external, name char(32), con ":id || '-' || :name", dt date )b,创建guc参数文件,如'/tmp/data/guc.txt'。set a_format_copy_version='s1';c,创建数据文件,如'/tmp/data/data.csv'。1,OK,,2007-07-8 2,OK,,2008-07-8 3,OK,,2009-07-8 4,OK,,2007-07-8 43,DISCARD,,2007-07-8 ,,, 32,DISCARD,,2007-07-8 a,ERROR int,,2007-07-8 8,ERROR date,,2007-37-8 ,,,, , 8,ERROR fields,,2007-37-8 ,,, 5,OK,,2021-07-302.创建用户并授予使用权限。CREATE USER load_user WITH PASSWORD '************'; GRANT ALL ON SCHEMA public TO load_user; SELECT copy_summary_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='gs_copy_summary'); GRANT ALL PRIVILEGES ON public.gs_copy_summary To load_user; SELECT copy_error_log_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='pgxc_copy_error_log'); GRANT ALL PRIVILEGES ON public.pgxc_copy_error_log To load_user; \c - load_user Password for user load_user:3.创建目标导入表,如在gs_example数据库下创建loader_tbl表。\c gs_example Password for user load_user: CREATE TABLE loader_tbl ( ID NUMBER, NAME VARCHAR2(20), CON VARCHAR2(20), DT DATE );4.进行导入。退出当前登录连接。\q执行导入前,先确认gs_loader工具有可执行权限。确保当前路径有文件写入权限(gs_loader在处理过程中会生成一些临时文件,导入完成后自动删除)。gs_loader control=/tmp/data/loader.ctl data=/tmp/data/data.csv db=gs_example bad=/tmp/data/loader.bad guc_param=/tmp/data/guc.txt errors=5 port=8000 passwd=************ user=load_user -h 192.*.*.139;执行结果如下。gs_loader: version 0.1 5 Rows successfully loaded. log file is: /tmp/data/loader.log其中/tmp/data/data.csv文件的前四行和最后一行被导入,第5行和第7行第二个字符不是','被忽略;第6行,第10行和第13行全部字段为空被忽略;第8行,第9行和第12行由于错误的字段值而不被导入。定义的'bad=/tmp/data/loader.bad'可以查看出错的行,执行结果回显的'/tmp/data/loader.log'记录了导入的日志信息。
  • [技术解读] GaussDB智能运维实践:自动化监控与故障预警实践
    一、引言数据库是企业业务系统的核心组件,其稳定性和性能直接影响业务的连续性和用户体验。传统的数据库运维方式主要依赖于人工监控和手动处理,这种方式不仅效率低下,而且容易因为人为因素导致故障处理不及时,甚至引发更大的问题。因此,引入智能运维技术,实现数据库的自动化监控和故障预警,对于提高企业业务系统的稳定性和可靠性具有重要意义。天翼云GaussDB作为一款分布式云数据库产品,具有高性能、高可用性和可扩展性等特点。然而,随着业务规模的不断扩大,数据库运维工作也面临着越来越多的挑战。为了应对这些挑战,天翼云GaussDB引入了智能运维技术,通过自动化监控和故障预警系统,实现对数据库运行状态的实时监控和故障预警,提高了运维效率和系统稳定性。二、自动化监控系统的构建自动化监控是智能运维的基础,通过实时监控数据库的运行状态,可以及时发现潜在的问题并进行处理。天翼云GaussDB的自动化监控系统采用了分布式架构,由数据采集模块、数据处理模块、监控分析模块和展示模块组成,实现了对数据库性能的全面监控。数据采集模块数据采集模块负责实时收集GaussDB的各项运行数据,包括CPU使用率、内存占用率、磁盘I/O、网络吞吐量等性能指标,以及数据库连接数、查询响应时间等业务指标。采集方式包括API接口调用、日志文件解析等,确保数据的准确性和实时性。数据处理模块数据处理模块对采集到的数据进行清洗、整合和标准化处理,形成统一的数据格式,便于后续的分析和监控。同时,数据处理模块还负责对数据进行存储和管理,确保数据的可靠性和安全性。监控分析模块监控分析模块基于机器学习算法和规则引擎,对处理后的数据进行分析和挖掘,识别潜在的性能瓶颈、资源不足和安全漏洞等问题,并生成相应的预警信息。同时,监控分析模块还可以根据历史数据,对数据库的运行趋势进行预测,为运维人员提供决策支持。展示模块展示模块将监控分析模块生成的预警信息和数据可视化展示给用户,包括仪表盘、趋势图、告警列表等,便于用户快速了解数据库的运行状况。同时,展示模块还提供了灵活的查询和筛选功能,方便用户根据需求进行数据的分析和处理。三、故障预警系统的实现故障预警是智能运维的核心功能之一,通过实时监测数据库的运行状态,并在发现潜在问题时及时发出预警,可以有效降低故障发生的概率和影响。天翼云GaussDB的故障预警系统采用了多种技术和方法,实现了对数据库故障的精准预警。阈值预警阈值预警是最基本的预警方式之一,通过设定各项性能指标的阈值,当实际值超过阈值时触发预警。天翼云GaussDB的阈值预警系统支持自定义阈值和动态调整阈值,确保预警的准确性和及时性。异常检测异常检测是一种基于机器学习算法的预警方式,通过对历史数据的学习和分析,建立数据库运行状态的模型,当实际状态与模型发生较大偏差时触发预警。天翼云GaussDB的异常检测系统采用了多种机器学习算法,如聚类算法、回归算法等,实现了对数据库运行状态的精准预测和预警。关联分析关联分析是一种基于数据挖掘技术的预警方式,通过分析不同性能指标之间的关联关系,发现潜在的问题和故障。天翼云GaussDB的关联分析系统支持对多项性能指标进行关联分析,如CPU使用率与内存占用率的关联、查询响应时间与数据库连接数的关联等,为运维人员提供了全面的故障预警信息。智能告警智能告警是故障预警系统的最终输出,通过将预警信息以可视化的方式展示给用户,并提供相应的处理建议,帮助运维人员快速定位问题并进行处理。天翼云GaussDB的智能告警系统支持多种告警方式,如邮件告警、短信告警、语音告警等,确保告警信息的及时传达和处理。四、智能运维实践案例为了更好地说明天翼云GaussDB智能运维的实践效果,以下将以某企业的实际案例为例进行介绍。案例背景某企业是一家快速发展的互联网企业,随着业务的不断扩张,数据库的数量和复杂度急剧增加。传统的数据库运维方式已经无法满足企业的需求,运维效率低下,故障处理不及时,严重影响了业务的连续性和用户体验。因此,该企业决定引入天翼云GaussDB的智能运维解决方案,实现对数据库运行状态的实时监控和故障预警。实施过程在实施过程中,该企业首先完成了对GaussDB的自动化监控系统的部署和配置,实现了对数据库各项运行数据的实时采集和处理。同时,该企业还根据业务需求,设定了相应的阈值和规则,确保预警系统的准确性和及时性。在实施过程中,该企业还充分利用了GaussDB提供的日志管理平台,对数据库的日志文件进行集中收集和分析。通过日志分析,该企业发现了多个潜在的性能瓶颈和安全隐患,并及时进行了优化和改进。实践效果通过引入天翼云GaussDB的智能运维解决方案,该企业实现了对数据库运行状态的实时监控和故障预警。在实际运行过程中,预警系统多次准确预警了潜在的故障和问题,为运维人员提供了及时的处理建议。同时,通过日志分析和优化改进,该企业的数据库性能得到了显著提升,业务连续性和用户体验也得到了有效保障。五、总结与展望天翼云GaussDB的智能运维实践为企业提供了高效、可靠的数据库运维解决方案。通过自动化监控和故障预警系统,实现了对数据库运行状态的实时监控和精准预警,提高了运维效率和系统稳定性。未来,随着云计算技术的不断发展和完善,天翼云GaussDB的智能运维解决方案将不断优化和创新,为企业带来更多的价值和收益。持续优化为了进一步提高智能运维的效果和准确性,天翼云GaussDB将持续优化自动化监控和故障预警系统。通过引入更先进的机器学习算法和数据分析技术,提高预警系统的智能化程度和预测准确性。同时,还将加强与其他系统的集成和协同工作,实现更全面的故障预警和应急响应。创新服务随着企业业务的不断发展和变化,对于数据库运维的需求也将不断变化。天翼云GaussDB将不断创新服务模式和功能,满足企业的多样化需求。例如,可以引入自动化运维脚本和工具集,帮助企业快速实现特定运维任务的自动化处理;还可以提供定制化的监控预警方案,根据企业的业务需求进行个性化配置和优化。加强合作天翼云GaussDB将加强与合作伙伴的合作和交流,共同推动智能运维技术的发展和应用。通过共享经验和资源,共同研究和解决运维过程中的难点和问题,推动智能运维技术的不断创新和进步。总之,天翼云GaussDB的智能运维实践为企业提供了高效、可靠的数据库运维解决方案。未来,随着技术的不断发展和完善,天翼云GaussDB将继续秉承开放合作、创新发展的理念,不断推出更加先进、更加智能的运维解决方案,为企业数字化转型和业务发展提供有力支撑。
  • [技术解读] 使用DAS的导出和导入功能迁移GaussDB数据
    使用DAS的导出和导入功能迁移GaussDB数据操作场景数据管理服务(Data Admin Service,简称DAS)是用来登录和操作华为云上数据库的Web服务,提供数据库开发、运维、智能诊断的一站式云上数据库管理平台,方便用户使用和运维数据库。当进行数据备份或迁移时,支持使用DAS的数据导出功能,获取完整的数据信息,再将数据从本地或者从OBS桶导入目标数据表。更多信息,请参见导入导出。约束限制导入单文件大小最大可达1GB。 可以支持导入的数据文件类型包括CSV格式和SQL文件格式。 暂不支持BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB等二进制类型字段的导入。 不支持使用跨区域的OBS桶导出导入数据。导出数据登录管理控制台。 单击管理控制台左上角的,选择区域和项目。 在页面左上角单击,选择“数据库 > 云数据库 GaussDB”,进入云数据库 GaussDB信息页面。 在“实例管理”页面,选择需要登录的目标数据库,单击操作列表中的“登录”,进入数据管理服务数据库登录界面。 正确输入数据库用户名和密码,单击“登录”,即可进入的数据库并进行管理。 在顶部菜单栏选择“导入·导出”>“导出”。 在导出页面,单击左上角“新建任务”,可根据需要选择“导出数据库”或“导出SQL结果集”。下文以导出数据库为例,导出SQL结果集同理。 也可通过单击“快速导出”,选择目标数据库,在创建快速导出任务弹窗中选择存储位置,并单击“确定”。在导出数据库弹出页面,您可按需选填“基本信息”及“高级选项”,并在页面右侧选择需要导出的表。说明: SQL结果集导出任务中,执行SQL的最大限制是5M。 数据库分用户库和系统库,系统库不支持导出功能。如需导出,需把创建用户数据库,业务部署到用户库,然后再执行导出操作。 DAS在执行导出操作时,会连接到备库进行导出,可以有效规避导出时对主库的性能影响,但当备库复制延迟较大时,会存在“导出的数据不是最新数据“的可能性。 设置完导出任务信息,单击弹出页面下部“确定”,创建导出任务。 在导出任务列表页面,可查看任务ID、任务类型、任务状态、进度等信息。 可在列表操作栏,单击“查看详情”,在任务详情弹出页面,查看本次导出任务执行的详情信息。导入数据在顶部菜单栏选择“导入·导出 > 导入”。 DAS支持从本地选取文件导入,同时也支持从OBS桶中直接选择文件进行导入操作。 图4 新建导入任务上传文件在导入页面单击左上角的“新建任务”,在弹出框选择导入类型,选择文件来源为“上传文件”、附件存放位置等信息并上传文件,选择导入数据库,设置字符集类型,按需勾选选项设置及填写备注信息。为了保障数据安全,DAS将文件保存在OBS桶中。说明: 出于数据隐私性保护目的,DAS需要提供一个用户的OBS存储,用来接收用户上传的附件信息,DAS会自动连接到该OBS文件,进行内存式读取,整个过程您的数据内容不会存储在DAS的任何存储介质上。 导入完成后若勾选删除上传的文件选项,则该文件导入目标数据库成功后,将从OBS桶中自动删除。 从OBS桶中选择 在导入页面单击左上角的“新建任务”,在弹出框设置导入类型,选择文件来源为“从OBS中选择”,在OBS文件浏览器弹窗中选择待导入文件,选择导入数据库,设置字符集类型,按需勾选选项设置及填写备注信息。说明: 从OBS桶中直接选择文件导入,导入目标数据库成功后,OBS桶不会删除该文件。导入信息设置完成后,单击“创建导入任务”即可。由于导入任务可能会覆盖原有的数据,需再次确认无误后单击“确定”。 可在导入任务列表中查看导入进度等信息,在操作栏单击“查看详情”,可在任务详情弹出框中,了解本次导入任务成功、失败等执行情况及耗时。
  • [技术解读] GaussDB联表使用方法
    在GaussDB数据库中,联表操作通常是通过SQL的JOIN子句来实现的。JOIN子句基于两个或多个表之间的共同字段将它们进行结合,从而能够根据需要从相关联的表中获取信息。以下是GaussDB中常用的几种JOIN操作及其用法:1. INNER JOIN(内连接)内连接会返回左表和右表中能关联起来的数据。语法:SELECT t1.column1, ..., t2.column1, ...FROM table1 t1INNER JOIN table2 t2ON t1.common_field = t2.common_field;示例:假设有两个表,Students(学生表)和Score(学生成绩表),通过学号(sno)进行关联。SELECT t1.sno, t1.sname, t2.sno, t2.scgradeFROM students t1INNER JOIN score t2ON t1.sno = t2.sno;2. LEFT JOIN(左连接)左连接会返回左表中所有记录,且在右表中找到的关联数据列也会被一起返回。如果右表中没有与左表匹配的记录,则结果中右表的部分会包含NULL。语法:SELECT t1.column1, ..., t2.column1, ...FROM table1 t1LEFT JOIN table2 t2ON t1.common_field = t2.common_field;示例:SELECT t1.sno, t1.sname, t2.sno, t2.scgradeFROM students t1LEFT JOIN score t2ON t1.sno = t2.sno;3. RIGHT JOIN(右连接)右连接会返回右表中所有记录,且在左表中找到的关联数据列也会被一起返回。如果左表中没有与右表匹配的记录,则结果中左表的部分会包含NULL。语法:SELECT t1.column1, ..., t2.column1, ...FROM table1 t1RIGHT JOIN table2 t2ON t1.common_field = t2.common_field;示例:SELECT t1.sno, t1.sname, t2.sno, t2.scgradeFROM students t1RIGHT JOIN score t2ON t1.sno = t2.sno;4. FULL JOIN(全连接)全连接会返回左表和右表中的所有记录。对于在其中一个表中存在但在另一个表中不存在的记录,结果中相应的部分会包含NULL。语法:SELECT t1.column1, ..., t2.column1, ...FROM table1 t1FULL JOIN table2 t2ON t1.common_field = t2.common_field;示例:SELECT t1.sno, t1.sname, t2.sno, t2.scgradeFROM students t1FULL JOIN score t2ON t1.sno = t2.sno;5. CROSS JOIN(交叉连接)交叉连接会返回两个表的笛卡尔积,即两个表中所有记录的组合。这种连接通常不常用,因为它可能会产生大量的结果集。语法:SELECT t1.column1, ..., t2.column1, ...FROM table1 t1CROSS JOIN table2 t2;注意事项在进行联表操作时,确保要连接的字段具有相同或兼容的数据类型。使用JOIN子句时,可以根据需要添加WHERE子句来进一步筛选结果集。对于大型数据集,联表操作可能会消耗较多的系统资源,因此在实际应用中需要注意性能问题。通过以上介绍,您应该能够在GaussDB数据库中有效地使用JOIN子句进行联表操作。
  • [技术解读] GaussDB-对象权限管理
     1.对象关系管理  --对象权限-授权与回收 授予权限使用GRANT,回收权限使用REVOKE; 2.对象权限管理演示  --表的对象权限。 GRANT SELECT     ON SJZT.TEST1 TO USER1;  GRANT INSERT     ON SJZT.TEST1 TO USER1; GRANT UPDATE     ON SJZT.TEST1 TO USER1; GRANT DELETE     ON SJZT.TEST1 TO USER1; GRANT TRUNCATE   ON SJZT.TEST1 TO USER1; GRANT REFERENCES ON SJZT.TEST1 TO USER1; GRANT ALTER      ON SJZT.TEST1 TO USER1; GRANT DROP       ON SJZT.TEST1 TO USER1; GRANT COMMENT    ON SJZT.TEST1 TO USER1; GRANT INDEX      ON SJZT.TEST1 TO USER1; GRANT VACUUM     ON SJZT.TEST1 TO USER1;   --DATABASE,SCHEMA,FUNC/PROC 的对象权限。 GRANT CREATE     ON SCHEMA SJZT TO USER1; --schema里面创建对象权限。 GRANT CONNECT    ON DATABASE SJZT TO USER1;--连接某个数据库的权限。 GRANT EXECUTE    ON SJZT.FUN/SJZT.PROC(存储过程或函数) TO USER1; --对某个存储过程和函数的执行权限。 GRANT USAGE      ON SCHEMA SJZT TO USER1;  --授予对于某个schema的登陆权限。 GRANT SELECT ON  TABLE SJZT.TEST1 TO USER1 WITH GRANT OPTION;  3.查看对象权限  --查看系统表pg_class的 relacl 字段获取表相关的授权信息。 sjzt=> select relacl from pg_class where relname='test1';                          relacl                           ---------------------------------------------------------  {sjzt=arwdDxt/sjzt,user1=ar*wdDx/sjzt,user1=APmiv/sjzt}   --可以看到:sjzt用户对表SJZT.TEST1的权限有:arwdDxt a:INSERT r:SELECT w:UPDATE d:DELETE D:TRUNCATE x:REFERENCES t:TRIGGER --user1用户对表:sjzt.test1的权限有:arwdDx / APmiv a:INSERT r*:SELECT ,*表示还可以将SELECT授予别人。 w:UPDATE d:DELETE D:TRUNCATE x:REFERENCES A:ALTER P:DROP m:COMMENT i:INDEX v:VACUUM  4.对象权限说明  --参数 参数说明 参数 参数说明 r:SELECT  C:CREATE  w:UPDATE  c:CONNECT  a:INSERT  T:TEMPORARY d:DELETE  A:ALTER D:TRUNCATE  P:DROP x:REFERENCES  m:COMMENT t:TRIGGER  i:INDEX X:EXECUTE  v:VACUUM U:USAGE  *:再授权选项  我们可以通过当前模式下:pg_class 表查看 test1表,有哪些用户对他有哪些权限。  5.总结  relcal :列所展示的展示的都是权限的简称,所以我们需要熟记GaussDB里面这些简称每个代表的含义。这样才能快速查看表的权限问题。 本文作者:薛双奇
  • [技术解读] GaussDB的登陆退出审计功能开启和关闭需要重启集群
     1.GaussDB数据库登陆退出审计功能查看  --数据库登陆退出审计的查看。 --(1)审计功能默认打开。 gaussdb=> show audit_enabled;  audit_enabled  ---------------  on (1 row) --数据库的登陆退出进行审计:默认打开。 gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  7 (1 row) 2.验证登陆退出的审计功能  --(2)新登陆一个窗口: [omm@gaussdb01 cn_5001]$ gsql -d sjzt -U sjzt -W Gauss_123 -p 8000 gsql ((GaussDB Kernel 503.1.0.SPC1200 build c28d95e9) compiled at 2023-07-05 16:26:07 commit 5703 last mr 11933 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.   sjzt=>  (3)查看数据库的登陆审计信息。 gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username<>'rdsAdmin';           time          |     type      | result | userid | username | database | client_conninfo | object_name |                       detail_info                        | node_name |    thread_id            | local_port | remote_port  ------------------------+---------------+--------+--------+----------+----------+-----------------+-------------+----------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:01:07+08 | login_success | ok     | 16900  | sjzt     | sjzt     | gsql@[local]    | sjzt        | login db(sjzt) success,the current user is:sjzt, SSL=off | cn_5001   | 139950822323968@746859667984405 | 8000       | null (1 row)   --可以看到sjzt用户登陆sjzt数据库。但是这个里面的审计信息会记录数据库 --内部私网数据交互的信息,所以每秒中产生的rdsAdmin用户的登陆退出日志非常多。 --我们使用了sjzt用户,才可以看到登陆退出日志。 --(4)现在退出登陆。 [omm@gaussdb01 cn_5001]$ gsql -d sjzt -U sjzt -W Gauss_123 -p 8000 gsql ((GaussDB Kernel 503.1.0.SPC1200 build c28d95e9) compiled at 2023-07-05 16:26:07 commit 5703 last mr 11933 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.   sjzt=> \q   --(5)继续查看退出的审计信息。 gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username<>'rdsAdmin';           time          |     type      | result | userid | username | database | client_conninfo | object_name |                       detail_info                        | node_name |     thread_id            | local_port | remote_port  ------------------------+---------------+--------+--------+----------+----------+-----------------+-------------+----------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:01:07+08 | login_success | ok     | 16900  | sjzt     | sjzt     | gsql@[local]    | sjzt        | login db(sjzt) success,the current user is:sjzt, SSL=off | cn_5001   | 139950822323968@746859667984405 | 8000       | null  2023-09-01 13:04:20+08 | user_logout   | ok     | 16900  | sjzt     | sjzt     | gsql@[local]    | sjzt        | session timeout, logout db(sjzt) success                 | cn_5001   | 139950822323968@746859860894315 | 8000       | null (2 rows)  3.关闭数据库登陆退出审计的功能  (6)关闭数据库的登陆退出的审计功能。   --关闭数据库的审计: [omm@gaussdb01 ~]$ gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_login_logout = 0" The gs_guc run with the following arguments: [gs_guc -Z coordinator -Z datanode -N all -I all -c audit_login_logout = 0 set ]. Begin to perform the total nodes: 3. Popen count is 3, Popen success count is 3, Popen failure count is 0. Begin to perform gs_guc for coordinators. Command count is 3, Command success count is 3, Command failure count is 0. Total instances: 3. Failed instances: 0. ALL: Success to perform gs_guc! Begin to perform the total nodes: 3. Popen count is 3, Popen success count is 3, Popen failure count is 0. Begin to perform gs_guc for datanodes. Command count is 3, Command success count is 3, Command failure count is 0. Total instances: 9. Failed instances: 0. ALL: Success to perform gs_guc!   (7)检查登陆退出审计 gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  7 (1 row) --我们发现没有变化,即登陆退出的审计不是立即可以关闭的。   (8)重启集群 --关闭集群  [omm@gaussdb01 ~]$ cm_ctl stop cm_ctl: stop cluster.  cm_ctl: stop nodeid: 1 cm_ctl: stop nodeid: 2 cm_ctl: stop nodeid: 3 ................................ cm_ctl: stop cluster successfully. cm_ctl: stopping the ETCD cluster. .............. cm_ctl: The ETCD cluster stops successfully. [omm@gaussdb01 ~]$  --启动集群 [omm@gaussdb01 ~]$ cm_ctl start cm_ctl: starting the ETCD cluster. . cm_ctl: the ETCD cluster starts successfully. cm_ctl: checking cluster status. cm_ctl: checking cluster status. cm_ctl: checking finished in 1792 ms. cm_ctl: start cluster.  cm_ctl: start nodeid: 1 cm_ctl: start nodeid: 2 cm_ctl: start nodeid: 3 ............... cm_ctl: start cluster successfully.   --(9)检查登陆退出审计参数。 gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  0 (1 row) --可以发现,登陆退出的审计功能已经关闭。  4.关闭登陆退出审计功能后验证是否记录审计日志  (10)登陆退出并查看日志 [omm@gaussdb02 ~]$ date Fri Sep  1 13:14:09 CST 2023 [omm@gaussdb02 ~]$ gsql -d sjzt -U sjzt -W Gauss_123 -p 8000 gsql ((GaussDB Kernel 503.1.0.SPC1200 build c28d95e9) compiled at 2023-07-05 16:26:07 commit 5703 last mr 11933 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.   sjzt=> \q    gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username<>'rdsAdmin';           time          |      type      | result | userid | username  | database  |   client_conninfo   | object_name |                       detail_info                 | node_name |            thread_id            | local_port | remote_port  ------------------------+----------------+--------+--------+-----------+-----------+---------------------+-------------+----------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:01:07+08 | login_success  | ok     | 16900  | sjzt      | sjzt      | gsql@[local]        | sjzt        | login db(sjzt) success,the current user is:sjzt, SSL=off | cn_5001   | 139950822323968@746859667984405 | 8000       | null  2023-09-01 13:04:20+08 | user_logout    | ok     | 16900  | sjzt      | sjzt      | gsql@[local]        | sjzt        | session timeout, logout db(sjzt) success                 | cn_5001   | 139950822323968@746859860894315 | 8000       | null  2023-09-01 13:10:33+08 | user_logout    | ok     | 16900  | sjzt      | sjzt      | gsql@[local]        | sjzt        | session timeout, logout db(sjzt) success                 | cn_5001   | 139950872786688@746860233783267 | 8000       | null  2023-09-01 13:10:42+08 | system_stop    | ok     |        | null      | null      | null                | null        | system stop fast success                                 | cn_5001   | null                            | null       | null  2023-09-01 13:10:42+08 | user_logout    | ok     | 16420  | root      | postgres  | gsql@[local]        | postgres    | session timeout, logout db(postgres) success             | cn_5001   | 139951683720960@746860242507692 | 8000       | null  2023-09-01 13:11:52+08 | internal_event | ok     | 0      | [unknown] | [unknown] | [unknown]@[unknown] | file        | create a new audit file                                  | cn_5001   | 14 (6 rows)   --可以发现:11:14分并没有记录到登陆退出的审计日志。  登陆退出审计功能关闭后,不再记录登陆和退出日志。  5.开启数据库登陆退出的审计功能  (11)重新开启登陆退出的审计功能。 --开启审计功能,同样需要重启集群才能生效。 gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_login_logout = 7" cm_ctl stop  cm_ctl start  gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  7 (1 row) gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username='root' and database='postgres';           time          |     type      | result | userid | username | database |  client_conninfo  | object_name |                         detail_info                     | node_name |          thread_id            | local_port | remote_port  ------------------------+---------------+--------+--------+----------+----------+-------------------+-------------+--------------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:10:42+08 | user_logout   | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | session timeout, logout db(postgres) success                 | cn_5001   | 139951683720960@746860242507692 | 8000       | null  2023-09-01 13:19:19+08 | login_failed  | failed | 16420  | root     | postgres | [unknown]@[local] | postgres    | login db(postgres)failed with no password, SSL=off           | cn_5001   | 140573868291840@746860759463930 | 8000       | null  2023-09-01 13:19:25+08 | login_success | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | login db(postgres) success,the current user is:root, SSL=off | cn_5001   | 140573868291840@746860765764587 | 8000       | null  2023-09-01 13:23:41+08 | login_success | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | login db(postgres) success,the current user is:root, SSL=off | cn_5001   | 140573847254784@746861021688743 | 8000       | null  2023-09-01 13:24:00+08 | user_logout   | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | session timeout, logout db(postgres) success                 | cn_5001   | 140573847254784@746861040399637 | 8000       | null  2023-09-01 13:24:08+08 | login_success | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | login db(postgres) success,the current user is:root, SSL=off | cn_5001   | 140573847254784@746861048330684 | 8000       | null  2023-09-01 13:24:22+08 | user_logout   | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | session timeout, logout db(postgres) success                 | cn_5001   | 140573847254784@746861062082322 | 8000       | null (7 rows)  6.总结  1)系统登陆退出的审计,开启和关闭都需要重启集群。 2)pg_query_audit,审计日志只记录在本节点登陆和退出的用户,在集群其他节点登陆和退出不会在当前节点记录。在其他节点无论登陆退出多少次,在当前节点下都无法查询到。  3)集群级别的审计日志需要使用:pgxc_query_audit 表来查看。  我们上面看的都是本地登陆的信息。  SELECT * FROM pgxc_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00')where username='root' and database='postgres';   本文作者:薛双奇
  • [技术解读] GaussDB的登陆退出审计功能开启和关闭需要重启集群
    1.GaussDB数据库登陆退出审计功能查看  --数据库登陆退出审计的查看。 --(1)审计功能默认打开。 gaussdb=> show audit_enabled;  audit_enabled  ---------------  on (1 row) --数据库的登陆退出进行审计:默认打开。 gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  7 (1 row) 2.验证登陆退出的审计功能  --(2)新登陆一个窗口: [omm@gaussdb01 cn_5001]$ gsql -d sjzt -U sjzt -W Gauss_123 -p 8000 gsql ((GaussDB Kernel 503.1.0.SPC1200 build c28d95e9) compiled at 2023-07-05 16:26:07 commit 5703 last mr 11933 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.   sjzt=>  (3)查看数据库的登陆审计信息。 gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username<>'rdsAdmin';           time          |     type      | result | userid | username | database | client_conninfo | object_name |                       detail_info                        | node_name |    thread_id            | local_port | remote_port  ------------------------+---------------+--------+--------+----------+----------+-----------------+-------------+----------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:01:07+08 | login_success | ok     | 16900  | sjzt     | sjzt     | gsql@[local]    | sjzt        | login db(sjzt) success,the current user is:sjzt, SSL=off | cn_5001   | 139950822323968@746859667984405 | 8000       | null (1 row)   --可以看到sjzt用户登陆sjzt数据库。但是这个里面的审计信息会记录数据库 --内部私网数据交互的信息,所以每秒中产生的rdsAdmin用户的登陆退出日志非常多。 --我们使用了sjzt用户,才可以看到登陆退出日志。 --(4)现在退出登陆。 [omm@gaussdb01 cn_5001]$ gsql -d sjzt -U sjzt -W Gauss_123 -p 8000 gsql ((GaussDB Kernel 503.1.0.SPC1200 build c28d95e9) compiled at 2023-07-05 16:26:07 commit 5703 last mr 11933 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.   sjzt=> \q   --(5)继续查看退出的审计信息。 gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username<>'rdsAdmin';           time          |     type      | result | userid | username | database | client_conninfo | object_name |                       detail_info                        | node_name |     thread_id            | local_port | remote_port  ------------------------+---------------+--------+--------+----------+----------+-----------------+-------------+----------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:01:07+08 | login_success | ok     | 16900  | sjzt     | sjzt     | gsql@[local]    | sjzt        | login db(sjzt) success,the current user is:sjzt, SSL=off | cn_5001   | 139950822323968@746859667984405 | 8000       | null  2023-09-01 13:04:20+08 | user_logout   | ok     | 16900  | sjzt     | sjzt     | gsql@[local]    | sjzt        | session timeout, logout db(sjzt) success                 | cn_5001   | 139950822323968@746859860894315 | 8000       | null (2 rows)  3.关闭数据库登陆退出审计的功能  (6)关闭数据库的登陆退出的审计功能。   --关闭数据库的审计: [omm@gaussdb01 ~]$ gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_login_logout = 0" The gs_guc run with the following arguments: [gs_guc -Z coordinator -Z datanode -N all -I all -c audit_login_logout = 0 set ]. Begin to perform the total nodes: 3. Popen count is 3, Popen success count is 3, Popen failure count is 0. Begin to perform gs_guc for coordinators. Command count is 3, Command success count is 3, Command failure count is 0. Total instances: 3. Failed instances: 0. ALL: Success to perform gs_guc! Begin to perform the total nodes: 3. Popen count is 3, Popen success count is 3, Popen failure count is 0. Begin to perform gs_guc for datanodes. Command count is 3, Command success count is 3, Command failure count is 0. Total instances: 9. Failed instances: 0. ALL: Success to perform gs_guc!   (7)检查登陆退出审计 gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  7 (1 row) --我们发现没有变化,即登陆退出的审计不是立即可以关闭的。   (8)重启集群 --关闭集群  [omm@gaussdb01 ~]$ cm_ctl stop cm_ctl: stop cluster.  cm_ctl: stop nodeid: 1 cm_ctl: stop nodeid: 2 cm_ctl: stop nodeid: 3 ................................ cm_ctl: stop cluster successfully. cm_ctl: stopping the ETCD cluster. .............. cm_ctl: The ETCD cluster stops successfully. [omm@gaussdb01 ~]$  --启动集群 [omm@gaussdb01 ~]$ cm_ctl start cm_ctl: starting the ETCD cluster. . cm_ctl: the ETCD cluster starts successfully. cm_ctl: checking cluster status. cm_ctl: checking cluster status. cm_ctl: checking finished in 1792 ms. cm_ctl: start cluster.  cm_ctl: start nodeid: 1 cm_ctl: start nodeid: 2 cm_ctl: start nodeid: 3 ............... cm_ctl: start cluster successfully.   --(9)检查登陆退出审计参数。 gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  0 (1 row) --可以发现,登陆退出的审计功能已经关闭。  4.关闭登陆退出审计功能后验证是否记录审计日志  (10)登陆退出并查看日志 [omm@gaussdb02 ~]$ date Fri Sep  1 13:14:09 CST 2023 [omm@gaussdb02 ~]$ gsql -d sjzt -U sjzt -W Gauss_123 -p 8000 gsql ((GaussDB Kernel 503.1.0.SPC1200 build c28d95e9) compiled at 2023-07-05 16:26:07 commit 5703 last mr 11933 release) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.   sjzt=> \q    gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username<>'rdsAdmin';           time          |      type      | result | userid | username  | database  |   client_conninfo   | object_name |                       detail_info                 | node_name |            thread_id            | local_port | remote_port  ------------------------+----------------+--------+--------+-----------+-----------+---------------------+-------------+----------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:01:07+08 | login_success  | ok     | 16900  | sjzt      | sjzt      | gsql@[local]        | sjzt        | login db(sjzt) success,the current user is:sjzt, SSL=off | cn_5001   | 139950822323968@746859667984405 | 8000       | null  2023-09-01 13:04:20+08 | user_logout    | ok     | 16900  | sjzt      | sjzt      | gsql@[local]        | sjzt        | session timeout, logout db(sjzt) success                 | cn_5001   | 139950822323968@746859860894315 | 8000       | null  2023-09-01 13:10:33+08 | user_logout    | ok     | 16900  | sjzt      | sjzt      | gsql@[local]        | sjzt        | session timeout, logout db(sjzt) success                 | cn_5001   | 139950872786688@746860233783267 | 8000       | null  2023-09-01 13:10:42+08 | system_stop    | ok     |        | null      | null      | null                | null        | system stop fast success                                 | cn_5001   | null                            | null       | null  2023-09-01 13:10:42+08 | user_logout    | ok     | 16420  | root      | postgres  | gsql@[local]        | postgres    | session timeout, logout db(postgres) success             | cn_5001   | 139951683720960@746860242507692 | 8000       | null  2023-09-01 13:11:52+08 | internal_event | ok     | 0      | [unknown] | [unknown] | [unknown]@[unknown] | file        | create a new audit file                                  | cn_5001   | 14 (6 rows)   --可以发现:11:14分并没有记录到登陆退出的审计日志。  登陆退出审计功能关闭后,不再记录登陆和退出日志。  5.开启数据库登陆退出的审计功能  (11)重新开启登陆退出的审计功能。 --开启审计功能,同样需要重启集群才能生效。 gs_guc set -Z coordinator -Z datanode -N all -I all -c "audit_login_logout = 7" cm_ctl stop  cm_ctl start  gaussdb=> show audit_login_logout;  audit_login_logout  --------------------  7 (1 row) gaussdb=> select * from pg_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00') where username='root' and database='postgres';           time          |     type      | result | userid | username | database |  client_conninfo  | object_name |                         detail_info                     | node_name |          thread_id            | local_port | remote_port  ------------------------+---------------+--------+--------+----------+----------+-------------------+-------------+--------------------------------------------------------------+-----------+---------------------------------+------------+-------------  2023-09-01 13:10:42+08 | user_logout   | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | session timeout, logout db(postgres) success                 | cn_5001   | 139951683720960@746860242507692 | 8000       | null  2023-09-01 13:19:19+08 | login_failed  | failed | 16420  | root     | postgres | [unknown]@[local] | postgres    | login db(postgres)failed with no password, SSL=off           | cn_5001   | 140573868291840@746860759463930 | 8000       | null  2023-09-01 13:19:25+08 | login_success | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | login db(postgres) success,the current user is:root, SSL=off | cn_5001   | 140573868291840@746860765764587 | 8000       | null  2023-09-01 13:23:41+08 | login_success | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | login db(postgres) success,the current user is:root, SSL=off | cn_5001   | 140573847254784@746861021688743 | 8000       | null  2023-09-01 13:24:00+08 | user_logout   | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | session timeout, logout db(postgres) success                 | cn_5001   | 140573847254784@746861040399637 | 8000       | null  2023-09-01 13:24:08+08 | login_success | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | login db(postgres) success,the current user is:root, SSL=off | cn_5001   | 140573847254784@746861048330684 | 8000       | null  2023-09-01 13:24:22+08 | user_logout   | ok     | 16420  | root     | postgres | gsql@[local]      | postgres    | session timeout, logout db(postgres) success                 | cn_5001   | 140573847254784@746861062082322 | 8000       | null (7 rows)  6.总结  1)系统登陆退出的审计,开启和关闭都需要重启集群。 2)pg_query_audit,审计日志只记录在本节点登陆和退出的用户,在集群其他节点登陆和退出不会在当前节点记录。在其他节点无论登陆退出多少次,在当前节点下都无法查询到。  3)集群级别的审计日志需要使用:pgxc_query_audit 表来查看。  我们上面看的都是本地登陆的信息。  SELECT * FROM pgxc_query_audit('2023-09-01 12:59:00', '2023-09-01 16:00:00')where username='root' and database='postgres';   本文作者:薛双奇
总条数:1672 到第
上滑加载中