GaussDB日常维护操作

GaussDB日常维护操作

  • 日常维护检查
  • 操作系统参数
  • 数据库健康状态
  • 日志收集
  • 日志清理
  • 应用连接数
  • 表的例行维护
  • 索引重建
  • 慢SQL诊断

日常维护检查

实例状态检查:

#检查集群实例状态
gs_check -U omm -i CheckClusterState

cm_ctl query -Cvipd

#检查主备DN的角色和同步状态
gs_ctl query -D <实例数据目录>

版本检查:

select version();

数据库对象占用磁盘空间检查:

select pg_size_pretty(pg_database_size('postgres'));    --数据库占用磁盘空间

select pg_size_pretty(pg_total_relation_size('pg_statistic'));  --表数据+索引数据
select pg_size_pretty(pg_table_size('pg_statistic'));           --表数据
select pg_size_pretty(pg_indexes_size('pg_statistic'));         --索引数据

锁信息检查:

--检查锁信息
select * from pg_locks;

--检查等待锁的线程状态
select * from pg_thread_wait_status where wait_status='acquire lock';

统计事件:

--事件的启动时间、事务启动时间、SQL启动时间、状态变更时间等信息
select backend_start,xact_start,query_start,state_change,state,datname,usename,application_name,client_hostname from pg_stat_activity;

--统计当前的会话计数信息
select count(*) from pg_stat_activity;

--查询使用内存最多的会话
select * from pv_session_memory_detail() order by usedsize desc limit 10;

对象检查:

--查看表和索引信息
\d+ <TABLE_NAME>
\d+ <INDEX_NAME>

select * from pg_statistic;   --统计信息
select * from pg_partition;   --分区表信息
select * from pg_constraint;  --约束信息

操作系统参数

进行操作系统参数的单项检查(本地执行加-L):

gs_check -i CheckCPU          #检查CPU使用率
gs_check -i CheckCpuCount     #检查CPU核数
gs_check -i CheckMemInfo      #检查内存大小
gs_check -i CheckSwapMemory   #检查交换内存
gs_check -i CheckOSVer        #检查操作系统版本
gs_check -i CheckKernelVer    #检查内核版本
gs_check -i CheckSysParams    #检查操作系统参数

数据库健康状态

检查集群状态:

gs_check -U omm -i CheckClusterState

cm_ctl query -Cvipd

支持按场景检查数据库健康状况:

gs_check -e inspect    #例行巡检
gs_check -e health     #健康检查
gs_check -e replace    #节点替换检查
gs_check -e install    #安装前检查
gs_check -e expand     #扩容前检查
gs_check -e upgrade    #升级前巡检
gs_check -e binary_upgrade   #就地升级前检查

日志收集

数据库故障时,可以使用gs_collector工具收集日志。

gs_collector -h 22.89.73.13 -o /data/backup/ --begin-time="20240112 23:00" --end-time="20240113 01:00" 

通过--begin-time--end-time过滤不同时间段的日志,-h指定要收集的DN节点(默认收集所有节点的日志),-o指定收集日志保存的路径。

日志清理

$GAUSSLOG路径下文件名不带current的历史日志可以定期清理。

应用连接数

查看最大连接数:

show max_connections;

查看当前连接数:

select count(*) from (select pg_stat_get_backend_idset() as backendid);

查看当前活跃会话:

select datname,pid,sessionid,usename,application_name,client_addr,state,query_id,query from pg_stat_activity;

杀会话:

--指定会话的pid,成功会返回t,否则返回f
select pg_terminate_backend(PID);

扩容最大连接数:

gs_guc set -Z datanode -N all -I all -c "max_connections=1024"

然后重启数据库。

表的例行维护

为了保证数据库的有效运行,数据库必须在插入、删除操作后,基于客户场景,定期做VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。

📖 VACUUM与VACUUM FULL的主要区别:

  • VACUUM命令不会阻塞SELECT和DML语句,但是会阻塞ALTER TABLE语句。
  • VACUUM命令只是将被删除的dead tuples标记为可重用,因此数据文件占用的实际物理磁盘空间并不会缩小。
  • VACUUM FULL命令会阻塞对表的所有读写操作,包括SELECT语句。
  • VACUUM FULL会物理删除dead tuples,把释放的空间交还给操作系统。本质上是新建了一个数据文件并把live tuples迁移过去,因此数据文件占用的磁盘空间会缩小到实际的数据量。

使用VACUUM或VACUUM FULL命令,进行磁盘空间回收:

vacuum TABLE_NAME;                 --清理普通表
vacuum TABLE_NAME partition(P1);   --清理表分区

vacuum full TABLE_NAME;  --彻底回收死元组占用的空间 

使用ANALYZE语句更新统计信息:

analyze TABLE_NAME;
analyze verbose TABLE_NAME;  --更新表统计信息并输出相关信息

vacuum analyze TABLE_NAME;   --清理死元组的同时更新统计信息

维护建议:

  • 定期对部分大表做VACUUM FULL,在性能下降后为全库做VACUUM FULL,目前暂定每月做一次VACUUM FULL;
  • 定期对系统表做VACUUM FULL,主要是PG_ATTRIBUTE
  • 启用系统自动清理线程(AUTOVACUUM)自动执行VACUUM和ANALYZE,回收被标识为删除状态的记录空间,并更新表的统计数据。

索引重建

数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。

数据库支持的索引类型为B-tree索引,例行重建索引可有效的提高查询效率。

在重建索引前,用户可以通过临时增大maintenance_work_mempsort_work_mem的取值来加快索引的重建。

重建索引有以下两种方式:

  • (1)先运行DROP INDEX语句删除索引,再运行CREATE INDEX语句创建索引。

在删除索引过程中,会在父表上增加一个短暂的排他锁,阻止相关读写操作。在创建索引过程中,会锁住写操作但是不会锁住读操作,此时读操作只能使用顺序扫描

drop index IDX_T1_COL1;
create index IDX_T1_COL1 on T1(COL1);
  • (2)使用REINDEX语句重建索引。
    • 使用REINDEX TABLE语句重建索引,会在重建过程中增加排他锁,阻止相关读写操作。
    • 使用REINDEX INTERNAL TABLE语句重建desc表(包括列存表的cudesc表)的索引,会在重建过程中增加排他锁,阻止相关读写操作。
reindex table T1;
reindex internal table T1;

慢SQL诊断

查询SQL语句信息,需要合理设置GUC参数track_stmt_stat_leveltrack_stmt_stat_level参数控制语句执行跟踪的级别,第一部分控制全量SQL,第二部分控制慢SQL。对于慢SQL,当track_stmt_stat_level的值为非OFF时,且SQL执行时间超过log_min_duration_statement,会记录为慢SQL。默认值为"OFF,L0",建议设置为"L0,L0"

--查看某一时间段的SQL语句执行信息:
select * from DBE_PERF.get_global_full_sql_by_timestamp('2025-01-15 09:25:22', '2025-01-15 10:00:41');

--查看某一时间段的慢SQL执行信息:
select * from DBE_PERF.get_global_slow_sql_by_timestamp('2025-01-15 09:25:22', '2025-01-15 10:00:41');

--查看主节点SQL执行信息
select * from statement_history where start_time>('2025-01-15 09:25:22') and finish_time<('2025-01-15 10:00:41');

--查看备节点SQL执行信息(只能在备节点执行)
select * from dbe_perf.standby_statement_history(true, '2025-01-15 09:25:22', '2025-01-15 10:00:41');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/958089.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2025小年源码免费送】

&#x1f496;学习知识需费心&#xff0c; &#x1f4d5;整理归纳更费神。 &#x1f389;源码免费人人喜&#xff0c; &#x1f525;码农福利等你领&#xff01; &#x1f496;山高路远坑又深&#xff0c; &#x1f4d5;大军纵横任驰奔&#xff0c; &#x1f389;谁敢横刀立马行…

在Qt中实现点击一个界面上的按钮弹窗到另一个界面

文章目录 步骤 1&#xff1a;创建新窗口类步骤 2&#xff1a;设计窗口的 UI步骤 3&#xff1a;设计响应函数 以下是一个完整的示例&#xff0c;展示在Qt中如何实现在一个窗口中通过点击按钮弹出一个新窗口。 步骤 1&#xff1a;创建新窗口类 假设你要创建一个名为 WelcomeWidg…

基于AutoDL云计算平台+LLaMA-Factory训练平台微调本地大模型

1. 注册与认证 访问AutoDL官网&#xff1a;前往 AutoDL官网。 注册账号&#xff1a;完成注册流程。 实名认证&#xff1a;按照要求完成实名认证&#xff0c;以确保账号的合规性。 2. 选择GPU资源 进入算力市场&#xff1a;在官网首页点击“算力市场”菜单。 挑选GPU&#x…

智慧金融合集:财税资金数据管理一体化大屏

随着科技的快速进步和数字化转型的加速&#xff0c;金融、税务等机构和企业面临的数据量呈现出爆炸式增长。传统的数据分析方法早已无法胜任现代业务的需求。为此&#xff0c;许多机构开始尝试创新的软件工具来更好的管理繁琐的数据。 通过图扑软件的数据可视化大屏&#xff0c…

基于springboot社区医疗后台管理系统

基于Spring Boot的社区医疗后台管理系统是一种专为社区医疗机构设计的管理工具&#xff0c;旨在提高医疗服务的质量和效率。 一、系统背景与目的 社区医疗作为基层医疗服务的重要组成部分&#xff0c;承担着为社区居民提供基本医疗服务和公共卫生服务的重任。然而&#xff0c…

基于quartz,刷新定时器的cron表达式

文章目录 前言基于quartz&#xff0c;刷新定时器的cron表达式1. 先看一下测试效果2. 实现代码 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&…

63,【3】buuctf web Upload-Labs-Linux 1

进入靶场 点击pass1 查看提示 既然是上传文件&#xff0c;先构造一句话木马&#xff0c;便于用蚁剑连接 <?php eval($_POST[123])?> 上传木马 文件后缀写为.php.jpg 右键复制图片地址 打开蚁剑连接 先点击测试连接&#xff0c;显示成功后&#xff0c;再点击添加即可 …

Linux操作命令之云计算基础命令

一、图形化界面/文本模式 ctrlaltF2-6 图形切换到文本 ctrlalt 鼠标跳出虚拟机 ctrlaltF1 文本切换到图形 shift ctrl "" 扩大 ctrl "-" 缩小 shift ctrl "n" 新终端 shift ctrl "t" 新标签 alt 1,…

计算机毕业设计hadoop+spark视频推荐系统 短视频推荐系统 视频流量预测系统 短视频爬虫 视频数据分析 视频可视化 视频大数据 大数据

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

【智能解析多线程:线程安全与死锁的深度剖析】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 温故而知新线程安全问题多线程中有的线程未加锁一个线程有多把锁加了多层锁的代码&#xff0c;执行…

Grafana系列之面板接入Prometheus Alertmanager

关于Grafana的仪表板Dashboard&#xff0c;以及面板Panel&#xff0c;参考Grafana系列之Dashboard。可以直接在面板上创建Alert&#xff0c;即所谓的Grafana Alert&#xff0c;参考Grafana系列之Grafana Alert。除了Grafana Alert外&#xff0c;面板也可接入Prometheus Alertma…

【深度学习入门】深度学习知识点总结

一、卷积 &#xff08;1&#xff09;什么是卷积 定义&#xff1a;特征图的局部与卷积核做内积的操作。 作用&#xff1a;① 广泛应用于图像处理领域。卷积操作可以提取图片中的特征&#xff0c;低层的卷积层提取局部特征&#xff0c;如&#xff1a;边缘、线条、角。 ② 高层…

数据结构 链表2

目录 前言&#xff1a; 一&#xff0c;反转一个链表(迭代) 二&#xff0c;打印一个链表&#xff08;递归&#xff09; 三&#xff0c;反转一个链表(递归) 四&#xff0c;双向链表 总结 前言&#xff1a; 我们根据 [文章 链表1] 可以知道链表相比较于数组的优缺点和计算机…

curl简介与libcurl开源库的使用总结

curl工具和libcurl不是同一个东西&#xff0c;二者的关系主要体现在以下方面&#xff1a; 定义与性质 curl工具&#xff1a; 是一个利用URL语法在命令行下工作的文件传输工具&#xff0c;1997年首次发行。它支持多种协议&#xff0c;如HTTP、HTTPS、FTP、FTPS等&#xff0c;可用…

node.js 07.npm下包慢的问题与nrm的使用

一.npm下包慢 因为npm i 默认从npm官网服务器进行下包,但是npm官网服务器是海外服务器所以响应很慢. 于是我们通过npm下包的时候通常用淘宝镜像进行下包,下面是切换到淘宝镜像地址下包的操作. 二.nrm的使用 nrm是一个管理切换npm下包地址的工具,可以快速切换下包的地址. 安…

Flutter:carousel_slider 横向轮播图、垂直轮播公告栏实现

安装依赖 carousel_slider: ^5.0.01、垂直滚动公告栏 import package:carousel_slider/carousel_options.dart;// 垂直滚动公告栏Widget _buildNotice() {return <Widget>[<Widget>[TDImage(assetUrl: "assets/img/home11.png",width: 60.w,height: 60.w…

RavenMarket:用AI和区块链重塑预测市场

不论是美股市场还是加密市场&#xff0c;AI都是本轮周期里的最大叙事。本轮AI的最大受益者英伟达市值超越苹果一跃成为全球第一大公司&#xff0c;加密领域围绕着AI的创新也是层出不穷&#xff0c;很多项目方开始向着AI转型。 而近期币圈最热门的板块就是AI agent&#xff0c;…

【玩转全栈】----Django基本配置和介绍

目录 Django基本介绍&#xff1a; Django基本配置&#xff1a; 安装Django 创建项目 创建app 注册app Django配置路由URL Django创建视图 启动项目 Django基本介绍&#xff1a; Django是一个开源的、基于Python的高级Web框架&#xff0c;旨在以快速、简洁的方式构建高质量的Web…

学技术学英语:TCP的三次握手和四次挥手

单词 汉语意思 音标 acknowledge 承认&#xff0c;确认 /əkˈnɒl.ɪdʒ/ acknowledgment 确认&#xff0c;承认 /əkˈnɒl.ɪdʒ.mənt/ duplex 双向的 /ˈdjuː.pleks/ establish 建立 /ɪˈstb.lɪʃ/ handshake 握手&#xff0c;握手协议 /ˈhnd.ʃeɪk…

iconfont等图标托管网站上传svg显示未轮廓化解决办法

打开即时设计 即时设计 - 可实时协作的专业 UI 设计工具 导入图标后拖入画板里面&#xff0c;右键选择轮廓化 将图标导出