gaussdb 日常运维命令总结【01】
1. 确认数据库连接情况(用户流量)
select * from pg_stat_activity;select usename,client_addr,query from pg_stat_activity;select distinct * from (select usename 用户名,client_addr 监听地址,count(1) over(partition by usename,client_addr) 连接数,count(1) over() 连接总数 from pg_stat_activity)a;select query from pg_stat_activity where current_timestamp -query_start > interval '1 days';select usename,client_addr,query,query_start,state_change from pg_stat_activity;select usename,client_addr,query,query_start,state_change from pg_stat_activity where CLIENT_ADDR = '具体IP';
2. 确认集群和数据库是否处于正常运行状态,可对外提供数据服务
01. 实例状态
- 查询返回集群状态,正常状态应为Normal,Balanced为Yes
gs_om -t status
- 详细查看集群个节点上的实例进程状态
gs_om -t status --detail
02. 会话信息
- 查询数据库当前会话情况
select * from pg_stat_activity;
- 当前CN会话数和允许的最高连接会话数量
show max_active_statements;
- 当前CN的数据库连接数,以用户和线程ID分组
select usename,pid,application_name,client_addr from pg_stat_activity order by usename,pid;
- 强行停止会话
select pg_terminate_backent(pid);
03. 参数检查
show max_active_statements;
04. 修改参数
gs_guc reload -Z coordinator -N all -I all -c "max_active_statements=10"
gs_guc reload -Z datanode -N all -I all -c "max_active_statements=10"
05. 实例异常
当连接数据库出现缓慢、挂起等现象,需要进行诊断和分析,甚至可能需要重新启动数据库实例
06. 信息采集
通过采集系统的Hang信息,系统状态信息等,可以分析系统挂起的原因,间隔采样,可以用于对比变化,辅助分析。
gs_collector --begin-time="20180131 23:00" --end-time="20180201 20:00" -h host1
07. 清理运行日志
注意:请谨慎清理,确保所有清理的日志不影响未来的问题定位。
cd $GAUSSLOG
rm 日志名称
08. 停库:安全停库
如果数据库出现异常需要重新启动,可以通过示范命令等待用户业务结束后退出,以保证主备关系的实例数据一致
gs_om -t stop -m smart
09. 停库:强行停库
如果安全方式不能顺利关闭数据库,可以不等业务结束,直接退出集群。主备关系的实例数据可能不一致。
gs_om -t stop -m immediate
3. 检查日志信息
01. 查看系统日志和操作日志位置
echo $GAUSSLOG
02. 运行日志分析:数据库实例
在gsql客户端输入命令 “\set VERBOSITY verbose”进入verbose模式。verbose模式会显示详细的错误信息。在错误码中可以查询相关错误信息对应的处理办法。
03. 运行日志分析:集群类
通过查看cm日志进行集群运行分析
cd /GAUSSLOG/cm
4. 黑匣子日志
01. 设置core文件生成的最大数目
core文件数超出所设置数目时,新生成的core文件将会覆盖旧的core文件。避免Gaussdb频繁异常和重启反复产生core文件快速占据磁盘空间。
gs_guc set -Z datanode -N all -I all -c "bbox_dump_count=4"
gs_guc set -Z coordinator -N all -I all -c "bbox_dump_count=4"
02. 设置core文件的生成路径
不设置时,Gaussdb将从 /proc/sys/kernel/core_pattern下读取路径。
如果路径不合法(不存在,不是一个目录或用户没有写权限),core文件将生成在数据库的data目录下
mkdir /corefiles
chmod 750 /_pathcorefiles
gs_guc set -Z datanode -N all -I all -c "bbox_dump_path='/corefiles'"
gs_guc set -Z coordinator -N all -I all -c "bbox_dump_path='/corefiles'"
03. 启用黑匣子日志(core文件)记录功能
开启收集core文件的功能对操作系统有如下影响:对性能有一定的影响,尤其是进程频繁异常时对性能影响更大。core文件会占用磁盘空间。
5. 检查空间信息
01. 查看所有表空间
\db
select oid,spcname from pg_tablespace;
select pg_tablespace_location(tablespace_oid);
02. 查看表占用的空间大小
select t_name,pg_size_pretty(pg_relation_size(t_name)) from (values('store_sales'),('date_dim'),('store')) as names1(t_name);
6. 锁信息检查
锁是数据库控制并发的核心手段,检查相关信息可以监控数据库的事务和运行状况。
01. 锁信息
查询数据库中的锁信息
select * from pg_locks;
查询等待锁的线程状态信息
select * from pg_thread_wait_status where wait_status = 'acquire lock';
02. 锁故障排查
数据库出现锁竞争和阻塞时,需要排查和处理锁定,必要时通过kill阻塞进程消除锁定
03. 查询阻塞会话
查询返回会话的ID、用户信息、查询状态、以及导致阻塞的表,模式信息
select w.query as waiting_query,w.pid as w_pid, w.usename as w_user,
l.query as locking_query,
l.pid as l_pid,
l.usename as l_user,
t.schemaname||'.'||t.relname as tablename
from pg_stat_activity w join pg_locks l1 on w.pid = l1.pid
and not l1.granted join pg_locks l2 on l1.relation =l2.relation
and l2.granted join pg_stat_activity l on l2.pid = l.pid join pg_stat_user_tables t on l1.relation = t.relid where w.waiting limit 1;
04. 杀阻塞会话
根据会话ID结束会话
select pg_terminate_backend(139834762084352);
05. 杀掉所有空闲进程
SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE STATE='idle';
7. 运行数据统计
查看数据库当前的会话、事务和语句的运行情况
01. 查询事务时间
查询线程的启动时间、事务启动时间、sql启动时间以及状态变更时间
select backend_start,xact_start,query_start,state_change from pg_stat_activity;
02. 查询系统中长时间运行的查询语句
查询后会按执行时间从长到短顺序返回语句列表,第一条就是当前系统用时最长的查询语句。
返回的结果中包含了系统调用的sql语句和用户执行的sql语句,请根据实际找到用户执行时间长的语句。
若当前系统较为繁忙,可以通过current_timestamp - query_start 大于某一阈值来查看过滤。
select query from pg_stat_activity where current_timestamp -query_start > interval '1 days';
03. 会话统计信息
查看当前服务器的会话计数信息
select count(*) from pg_stat_activity;
查询当前使用内存最多的会话信息
select * from pv_session_memory_detail() order by usedsize desc limit 10;
8. 检查对象
表、索引、分区、约束等是数据库的核心存储对象,其核心信息和对象维护的是DBA重要的日常工作。
01. 锁信息
查询数据库中的锁信息
select * from pg_locks;
查询等待锁的线程状态信息
select * from pg_thread_wait_status where wait_status = 'acquire lock';
02. 表结构查询
\d+ table_name
03. 表统计信息
查询最后的统计信息分析收集时间。统计信息影响执行计划,当sql执行异常时,需要重点分析统计信息。
select relid.schemaname,relname,last_analyze,analyze_count from pg_stat_all_tables where last_analyze is not null;
04. 统计信息收集,收集统计信息是一项复杂任务,需要详细设计
更新单表的统计信息
analyze tablename;
更新全库的统计信息
analyze;
05. 索引信息数据
\d+ index_name
查询叶块数和聚簇因子,聚簇因子过高接近于行数可能代表索引效率不高。
select * from pg_index where indrelid =(select oid from pg_class where relname ='table_name');
06. 索引定义查询
查询索引的建立语句
select * from pg_indexes where tablename ='table_name';
07. 分区对象查询
分区类型、数量,边界值等
select * from dba_part_tables;
selelct * from dba_tab_partitions;
08. 约束信息
select * from pg_constraint;
09. sql检查和调优
对sql进行持续关注和分析,在sql自诊断的辅助下优化sql的效率、性能。
01. sql自诊断
当前CN上正在执行的作业的warning信息。
select warning from gs_wim_session_statistics;
当前CN上历史执行的作业的warning信息。
select warning from gs_wim_session_history;
查看更久的历史作业warning信息
select warning from gs_wim_session_info;
- 当GUC参数enable_resource_record 为on时,GS_WLM_SESSION_HISTORY视图中
的记录每隔3分钟被转储到系统表GS_WLM_SESSION_INFO中一次,同时
GS_WLM_SESSION_HISTORY视图中的记录被删除; - 当GUC参数enable_resource_record 为off时,记录在GS_WLM_SESSION_HISTORY视图中的存留时间达到超期时间(超期时间为3分钟)后会被删除。
02. 查看sql执行计划
只生成执行计划,不实际执行
explain select...
生成执行计划,并执行,显示执行的概要信息。显示中加入了实际的运行时间统计,包括在每个规划节点内部花掉的总时间(毫秒)和它实际返回的行数。
explain analyze select...
生成执行计划,并执行,显示执行期间的全部信息
explain performance select...
03. 统计类信息收集
建议定时任务执行统计信息,更新单个表的统计信息
analyze tablename;
更新全库的统计信息
analyze;
04. 增加plan hint协助调优
select /*+ <plan_hint1><plan_hint2> */ * from t1,(select /*+ <plan_hint3> */ from t2) where 1=1;
10. 检查定时任务
检查数据库定时任务执行情况,确保后台任务正确执行,尤其关心统计信息收集等核心任务。
查询用户的定时任务(job)信息,确保任务在期望的时间执行成功,这是dba的重要工作之一。
查看当前用户的定时任务信息。
select job,dbname,log_user,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from user_jobs;
查询所有用户的定时任务信息。
select job_id,dbname,log_user,start_date,last_satrt_date,this_run_date,next_run_date,interval,failure_count from pg_job;
01. 创建定时任务
创建测试表
create table test(id int,time date);
创建向表test插入数据的用户自定义存储过程
create or replace procdeure prc_job_1()
as
N_NUM integer :=1;
begin
for i in 1..1000 loop
insert into test values(i,sysdate);
end loop;
end;
/
创建定时任务执行存储过程,dbms_job.submit可以通过call或select调用。定时任务中要执行的sql语句,可以是一个或多个‘DML’,‘匿名块’,‘调用存储过程的语句’或3种混合的场景。
call dbms_job.submit('call public.prc_job_1();',sysdate,'interval "1 minute"',:a);
02. 启动定时任务
call dbms_job.broken(1,false);
03. 停止定时任务
call dbms_job.broken(1,true);
04. 删除定时任务
call dbms_job.remove(1);
11. 整集群备份恢复
备份
开启wal日志归档
python GaussRoach.py -t config --archive=true -p
执行备份,备份到NBU
python GaussRoach.py -t backup --master-port 6000 --media-destination samplepolicy --media-type NBU --metadata-destination /home/userA/metadata
执行备份,备份到磁盘
python GaussRoach.py -t backup --master-port 6000 --media-destination /home/userA/media --media-type Disk --metadata-destination /home/userA/metadata
关闭wal日志归档
python GaussRoach.py -t config --achive=falsh -p
说明:
开启wal日志归档是为了保证备份(或恢复)开始到结束期间,用户变更也能被完整备份。备份所使用的端口号仅需要设置为一个未被占用的端口即可
恢复
使用NBU上的备份恢复
python GaussRoach.py -t restore --clean --master-port 6000 --media-destination samplepolicy --media-type NBU --backup-key 20160121_190923 --metadata-destination /home/userA/metadata
使用磁盘上的备份恢复
python GaussRoach.py -t restore --clean --master-port 6000 --media-destination /home/userA/media --media-type Disk --backup-key 20160121_190548 --metadata-destination
12. 单表或多表备份恢复
检查各节点的${BIGDATA_HOME}/mppdb/.mppdbgs_profile文件中是否包含如下内容。如果没有包含,请增加。
export LD_LIBRARY_PATH="/usr/openv/lib":$LD_LIBRARY_PATH
执行备份
- 单表备份直接使用–tablename tbl_backup;
- 多表备份使用–logical --table-list /home/roack/bklist.txt
- bklist.txt中存储着表名。示例中为磁盘备份,要备份到NBU,请使用–media-type NBU,端口指定为未被占用的端口即可。
python GaussRoach.py -t backup --master-port 6000 --media-destination /home/userA/backup --media-type disk --agent-port 7000 --dbname postgres --tablename tbl_backup --metadata-destination /home/userA/metadata
或
python GaussRoach.py -t backup --master-port 6000 --media-destination samplepolicy --media-type disk --agent-port 7000 --logical --table-list /home/roack/bklist.txt --dbname postgres --metadata-destination /home/userA/metadata
恢复
python GaussRoach.py -t restore --master-port 6000 --media-destination /home/userA/backup --media-type Disk --agent-port 7000 --dbname postgres --tablename tbl_backup --backup-key 20160126_164639 --metadtata-destination /home/userA/metadata-destination /home/userA/metadata
或
python GaussRoach.py -t restore --master-port 6000 --media-destination /home/userA/media --media-type Disk --agent-port 7000 --logical --table-list /home/roach/blikst.txt --backup-key 20180605_185302 --dbname postgres --metadata-destination /home/userA/metadata
13. 用户模式备份恢复
示例:标识将数据库human_resource下,hr和public两个模式中的所有数据以及对象定义导出且导出后的内容将保存在/home/omm/backup/MPPDB_backup.sql
gs_dump -U jack -W Bigdata@123 -f /home/omm/backup/MPPDB_backup.sql -p 25308 human_resource -n hr -n public -F d
gs_restore -U jack -W Bigdata@123 -f /home/omm/backup/MPPDB_backup.sql -p 25308 -d human_resource -n hr -n public -e -c
14. 数据库备份和恢复
gs_dump -U jack -W Bigdata@123 -f /home/omm/backup/MPPDB_backup.tar -p 25308 human_resource -F -t
gs_restore -U jack -W Bigdata@123 -f /home/ommdbadmin/backup/MPPDB_backup.tar -p 25308 -d human_resource -F t
15. 检查基本信息
基本信息包括版本、容量检查等,定期检查数据库信息并登记在案是数据库生命周期的重要内容之一。
版本检查
select version();
容量检查
select pg_table_size('table_name');
select pg_database_size('database_name');
16. 挂载卸载浮动
VM机的eth0,物理机的bond0
示例:删除浮动ip
ip addr delete 10.164.36.123/24 dev eth0:1
ip addr delete 10.164.36.123/24 dev bond0:1
示例:绑定浮动ip
ifconfig eth0:1 10.61.151.123/24
ifconfig bond00:1 10.61.151.123/24
17. 网络相关
客户端测试
ping 10.11.12.123
curl -kv 10.11.12.123:5432
telnet 10.11.12.123 5432
说明:是否为物理网络不通
服务端测试
netstat -anlp | grep 5432
说明:服务端进程是否正常
sudo /usr/sbin/arping -I bond0 -c 5 -U -s 10.58.14.133 -b 10.58.34.254
说明:服务端流量测试,虚拟机eth0或物理机bond0,-s指定ip ,-b指定网关
gsql -U 用户 -d 数据库 -W 密码 -h IP地址 -p 端口
说明:测试集群间是否可以跨服务器登录
服务端OS防火墙
systemctl stop firewalld.service
systemctl disable firewalld
systemctl status firewalld.service
说明:永久关闭OS防火墙
gaussdb 日常运维命令总结【01】相关推荐
- Oracle DG日常运维命令大全
作者:IT邦德 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 (Web\java\Python)工作,主要服务于生产制造 现拥有 Oracle 11g OCP/OCM. Mysql.Oce ...
- Curl运维命令 - 日常用法总结
在Linux系统中,curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载操作,是综合传输工具,习惯上称url为下载工具.下面就日常运 ...
- oracle 运维入门,Oracle日常基本运维命令及基本体系结构
Oracle日常基本运维命令及基本体系结构 发布人:中嘉和信发布时间:2020.05.11来源:运维派 中嘉和信北京机房以康盛机房.亦庄国际机房.四季青机房为主,作为互联网数据中心集成服务领域的标杆企 ...
- hadoop日常运维
hadoop日常运维 @(HADOOP)[hadoop] (一)备份namenode的元数据 namenode中的元数据非常重要,如丢失或者损坏,则整个系统无法使用.因此应该经常对元数据进行备份,最好 ...
- [10] Linux系统日常运维
[10] Linux系统日常运维 10.1 使用w查看系统负载 [root@Temence ~]# w19:28:05 up 45 days, 9:20, 1 user, load average: ...
- Linux 系统日常运维九大技能和运维网络知识总结
一.Linux 系统日常运维九大技能 1.安装部署 方式:U盘,光盘和网络安装 其中网络安装已经成为了目前批量部署的首选方式:主要工具有Cobbler和PXE+kickstart 可以参考如下链接内容 ...
- 数据中心存储日常运维【13】
文章目录 管理员指南 管理员角色及权限 常用管理软件 维护项目总览 首次维保项目 每日和每周定期维护项目 例行维护 工具巡检 人工巡检 收集存储系统信息 日常管理 日常管理项目总览 上下电存储设备 管 ...
- 干货丨Ceph 日常运维常见难点及故障解决
本文转自twt社区. [导读]Ceph 日常运维中有几类常见问题,社区日前组织Ceph领域专家进行了线上的答疑交流,对社区会员提出的部分典型问题进行了分享解答,以下是分享内容,希望能为大家提供答案和一 ...
- 国产电脑日常运维记录
国产电脑日常运维记录 飞腾麒麟操作系统 1.安装应用 应用所在目录空白处右键单击,在弹出的菜单栏选择"在终端中打开",执行以下命令: sudo dpkg -i *.deb 提示输入 ...
- 【9.30】日常运维——rsync、系统日志
[9.30]日常运维--rsync.系统日志 10.28 rsync 工具介绍 10.29/10.30 rsync 常用选项 10.31 rsync 通过ssh同步 10.32/10.33 rsync ...
最新文章
- Pipe Utilization管道利用率
- 20145240《网络对抗》MSF基础应用
- 允许服务与桌面交互_在后全面屏时代 手机需要什么样的人机交互?
- c语言error ld returned,[Error] ld returned 1的错误
- oracle如何检索文件,从Oracle数据库检索文件的示例
- 配置鸿蒙Windows烧录环境 用Hiburn烧录第一个程序
- flink 1.9.0 编译:flink-fs-hadoop-shaded 找不到
- linux虚拟机网络配制方法及遇到问题的解决方法
- python定时爬虫_python 每天如何定时启动爬虫任务(实现方法分享)
- mac git 拉代码太慢或是拉不下来,可能是这个原因
- 当浏览器是ie11以前版本的,跳转到ie升级页
- 用wget命令从FTP服务器下载数据
- 2012美国大选献金项目数据分析(有史以来最全面)
- Intel处理器将被苹果M1处理器降维式打击
- 9月第1周基金排行榜 | TokenInsight
- 【数学建模笔记】对策论
- 英语 Yang liang 120 --180
- UC如被百度控股,手机qq浏览器改如何进攻和防守
- 摩拜单车的“黑科技”
- SWT(Detecting Text in Natural Scenes with Stroke Width Transform)算法详解
热门文章
- C++多线程同步效率对比之临界区和原子锁
- 【CSS笔记】CSS实现后台管理系统主界面布局
- mysql导出的身份证格式错误
- 支付对接常用:关于asp rsa加密
- Mysql 分数排名查询
- web前端设计与开发期末作品/期末大作业:我的家乡——走进达州(4页) HTML+CSS+JavaScript
- android 4.4 一键root,手动一键root nexus 4 android 4.4
- VS2010 旗舰版序列号
- 快递地址自动识别填充
- 什么是脚本语言(python脚本是什么?)