greenplum postgresql(GP)监控系列问题

Greenplum入门介绍4-管理和监控
GP用命令行工具来管理,放在$GPHOME/bin下面。
GP主要提供以下管理命令:
1. 安装GP数据库
2. 初始化GP数据库
3. 开启和停止数据库
4. 添加和删除Host
5. 添加新segment,并表数据重新分布
6. 恢复失败的segment instance
7. 恢复或故障切换失效的master instance
8. 备份恢复数据库
9. 并行加载数据
10. 系统状态报告
GP提供一个图形化数据库监控,是用flash写的,可以查到当前和历史数据记录。
web server使用的是lighttpd。
感觉还不错哈,图形化就更直观了。gpstate也能列出状态报告.
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(图: GP性能监控界面)
原理和其它同类型系统一样,在每个segment安装代理且每隔15秒发送相关数据到master,保存到数据库中。
(图: GP性能监控架构图)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。greenplum查看表的数据分布情况来调整dk值 - gobird - 博客园
随笔 - 17, 文章 - 0, 评论 - 3, 引用 - 0
  最近正在进行ETL后台系统数据的日志分析,查看运行耗时长的TASK,并找出耗时长的JOB,进行逻辑层面和数据库层面的优化.本文仅从数据库层面上的优化着手(包括SQL语句的调整以及greenplum table dk的调整).查看一个耗时30分钟左右的JOB,找到相应的源表,进行如下分析:
dw=#select gp_segment_id,count(*) from tb_name group by gp_segment_id order by count(*) descgp_segment_id
count----------------------
  说明:gp_segment_id是greenplum table里面的一个隐藏列,用来标记该行属于哪个节点.由此可见,该表只分布在一个节点65上(节点信息请查看gp_segment_configuration),而我的gp总共有96个节点,这显然没有利用到gp多节点运算能力,该表的DK值设置的有问题.因此,使用alter table tb_name set distributed by (col1,...)对表的DK值进行重新设置.然后重新运行上面的语句,一方面观察节点数(是否每个节点都分布了),另一方面观察节点的条数(分布是否平衡)。在上述二项观察指标大致满足要求后,请vacuum full、vacuum analyze一样,彻底回收空间+收集统计信息。把耗时长JOB的源表抓出来,逐个分析,整个TASK的执行时长从3小时缩短到2小时左右(主要是之前表设计的太差,才导致有这么大的优化空间),后期就是对逻辑以及SQL的优化,以及提高并发度,这才是王道。
  为了统计分析方便,设计了如下二张表和若干function,用来收集表的分布情况,并发现哪些表需要进行重新调整DK值。
CREATE TABLE "public"."table_segment_statistics" (
"table_name" varchar(200) DEFAULT NULL,
"segment_count" int4 DEFAULT NULL,
"table_rows" int8 DEFAULT NULL
CREATE TABLE "public"."table_segment_statistics_balance" (
"table_name" varchar(200) DEFAULT NULL,
"segment_id" int4 DEFAULT NULL,
"segment_count" int8 DEFAULT NULL
--function
CREATE OR REPLACE FUNCTION "public"."analyze_table_dk_balance"(v_schemaname varchar)
RETURNS "pg_catalog"."int4" AS $BODY$
v_tb varchar(200);
v_cur_tb cursor for select schemaname||'.'||tablename from pg_tables where schemaname&&'information_schema' and schemaname&&'pg_catalog'
and schemaname&&'gp_toolkit' and tablename not like '%prt%' and schemaname=v_
truncate table public.table_segment_
truncate table public.table_segment_statistics_
open v_cur_
fetch v_cur_tb into v_
if not found THEN
execute 'insert into public.table_segment_statistics select '''||v_tb||''' as table_name,count(*) as segment_id,sum(num) as table_rows from (select gp_segment_id,count(*) num from '||v_tb||' group by gp_segment_id) t';
execute 'insert into public.table_segment_statistics_balance select '''||v_tb||''' as table_name,gp_segment_id,count(*) as cnt from '||v_tb||' group by gp_segment_id order by gp_segment_id';
LANGUAGE 'plpgsql' VOLATILE;
分析的语句如下:
--96指的是greenplum的节点(我的机器是96个)
select * from public.table_segment_statistics
where table_rows is not null and segment_count&96 and table_rows&10000
order by table_rows desc;
--找出比平均值超出10%的节点,这个阀值可以自行调整,另:只统计超过1万行的表,小表没有太大的分析意义
select a."table_name",b.segment_id,a.table_rows/a.segment_count as reldk,b.segment_count
"public".table_segment_statistics a
inner join
"public".table_segment_statistics_balance b
on a."table_name" = b."table_name"
where a."table_name" is not null and a.table_rows & 10000
and abs(a.table_rows/a.segment_count-b.segment_count)/(a.table_rows/a.segment_count)&0.1greenplum节点失败后恢复步骤
greenplum节点失败后恢复步骤
本文主要针对数据节点有mirror的情况。
1. 查看gp_segment_configration &表,判断down掉的节点。
2.排除故障后,恢复数据(对于4.2以前的版本建议重启后做数据恢复)
gprecoverseg
3.观察恢复是否完成
gpstate -s | grep Sync &(全部为 Synchronized 表示恢复完成)
4.平衡处理节点(如果主节点down了,mirror节点接管后,会造成部分节点负担过重。所以要进行这步操作)
gprecoverseg -r(备注 4.0 版本需要执行gpstop -r )
5.检查恢复结果
查看gp_segment_configurtation表的情况 &
1. role和preferred_role 全部相等,
2.mode 全部为 &s', &
3.status 全为 &u'
备注: 第四步会出现短暂的数据库不可用状态,在处理过程中会出现业务中断。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。greenplum_GP建表_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
greenplum_GP建表
g​r​e​e​n​p​l​u​m​_​G​P​建​表
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:16.55KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 emc greenplum 的文章

 

随机推荐