管理 Greenplum 集群

管理 Greenplum 集群

1.1.启动数据库

启动Greenplum数据库

gpstart -a

对于要求重启数据库生效

gpstop -r

仅重新载入更改配置文件生效

gpstop -u

1.2.维护模式启动Master

使用-m模式运行gpstart:

gpstart -m

以维护模式连接到Master进行目录维护。例如:

PGOPTIONS='-c gp_session_role=utility' psql postgres

在完成管理任务后,停止处于维护模式的额Master。然后以生产模式重启它。

gpstop -mr

1.3.停止Greenplum数据库

停止Greenplum数据库

gpstop

快速模式停止Greenplum数据库

gpstop -M fast

1.4.激活备库流程

激活数据库存储目录

gpactivatestandby -d $MASTER_DATA_DIRECTORY

用 -f 选项运行gpstate来检查状态:

gpstate -f

在后备Master主机上,移动或者移除数据目录gpseg-1。这个例子移动该目录:

mv /data/master/gpseg-1 /data/master/backup_gpseg-1

1.5.日常维护

集群状态查询

[gpadmin@gp-mdw ~]$ gpstate

磁盘空间查询

# 数据库查看使用量
select * from gp_toolkit.gp_disk_free;

# 系统命令行查看
gpssh -f host.list -e “df -h |grep data”

查询当前连接

psql -c "select * from pg_stat_activity;"

查看数据库

psql -c "select pg_size_pretty(pg_database_size('test'));"

表占用空间

psql -c "select pg_size_pretty(pg_relation_size('schema.test'));"

表统计

select relname from pg_class t where t.relname like 'ods%';
select relname from pg_class t where t.relname like 'kn%';

统计资源

select gp_segment_id,count(*) from test group by 1 ;

查看实例配置和状态

select * from gp_segment_configuration order by 1;

收集统计信息,回收空间

定期使用回收垃圾和收集统计信息,尤其在大数据量删除,导入以后,非常重要
Vacuum analyze tablename

进程监控:

select * from pg_stat_activity  where waiting ='t' ORDER BY current_query;    select * from pg_stat_activity  where waiting ='t' ORDER BY sess_id;
select * from pg_stat_activity  where waiting ='f' ORDER BY current_query;    select * from pg_stat_activity  where waiting ='f' ORDER BY sess_id;

select * from pg_tablespace;
select * from pg_filespace;

查看数据分布

select * from pg_filespace_entry;
SELECT spcname, fsname,fsedbid,fselocation FROM pg_tablespace pgts, pg_filespace pgfs,pg_filespace_entry pgfse WHERE pgts.spcfsoid=pgfse.fsefsoid AND pgfse.fsefsoid=pgfs.oid ORDER BY 1,3;

查看数据库备份

select pg_start_backup('backup baseline');
select pg_stop_backup();

常看数据库.conf配置

show all

查看当前日期属于一年中第几周

select EXTRACT(week from TIMESTAMP '2018-05-11');

1.6.集群异常修复

修复前负载判定(是否需要kill会话,是否需要重启),查看是否存在超过一个小时以上的会话,

select pid,usename,query_start,client_addr,xact_start,waiting ,waiting_reason,query from pg_stat_activity where state <>'idle' and query_start < now()-interval '1 hour' order by query_start;

查看节点负载,可以使用vmstat命令,也可以使用nmon监控工具(需安装)
节点日志备份([可选]判定实例>判定路径>备份日志,在恢复前备份日志)

select time,hostname,status,datadir,content from gp_configuration_history h,gp_segment_configuration c where h.dbid=c.dbid and "desc" like '%d, and%' order by time desc limit 10;

根据hostname和datadir,以及time备份对应实例pg_log目录下对应日期的日志

a.常规修复方式(后台运行)

nohup gprecoverseg -a &

若存在主备切换,则需要在修复完成后进行实例切回

nohup gprecoverseg -ra &

查看修复进度

gpstate -e

b. 全量修复方式(后台运行)

nohup gprecoverseg -Fa &

若存在主备切换,则需要在修复完成后进行实例切回

nohup gprecoverseg -ra &

2.6.使用事务

事务允许用户把多个SQL语句捆绑在一个要么全做要么全不做的操作中。
下面是Greenplum数据库的SQL事务命令:

  • BEGIN或者START TRANSACTION 开始一个事务块。
  • END或者COMMIT提交一个事务的结果。
  • ROLLBACK放弃一个事务而不做任何更改。
  • SAVEPOINT在一个事务中标记一个位置并且允许做部分回滚。用户可以回滚在一个保存点之后执行的命令但保留该保存点之前执行的命令。
  • ROLLBACK TO SAVEPOINT 回滚一个事务到一个保存点。
  • RELEASE SAVEPOINT 销毁一个事务内的保存点。

配置空闲空间映射

过期行被放在空闲空间映射中。空闲空间映射的尺寸应该足够大以保存数据库中所有的过期行。如果空间不足,一个普通的VACUUM命令也不能回收使空闲空间映射溢出的过期行所占用的空间。

VACUUM FULL会回收所有的过期行空间,但是它是一种很昂贵的操作,并且在大型的分布式的Greenplum数据库表上可能会花很长的不可接受的时间来完成。如果空闲空间映射溢出,可以用一个CREATE TABLE AS 语句重建该表并且删除旧表。不鼓励使用VACUUM FULL。用下列服务器配置参数调整空闲空间映射的尺寸:

max_fsm_pages
max_fsm_relations

为优化查询进行回收和分析

GP使用基于成本的查询优化器
ANALYZE命令收集查询优化器需要的统计信息
VACUUM ANALYZE可以一起执行:

=# VACUUM ANALYZE tb_cp_02;

4.管理日志文件

数据库服务日志文件

  • GP的日志输出量大而且不需要无期限的保存这些日志,管理员需要定期的滚动日志文件
  • GP在Master和所有Segment实例上开启了日志文件按天滚动
    服务器日志文件存放在每个实例数据目录的 pg_log 目录下,格式:gpdb-YYYY-MM-DD_TIME.csv
    log
    log1

控制写到服务器日志里的信息的详细程度。有效值是 DEBUG5, DEBUG4,DEBUG3,DEBUG2, DEBUG1,INFO,NOTICE, WARNING ,ERROR,LOG, FATAL,和 PANIC。每个级别都包含它后面的级别。越靠后的数值发往服务器日志的信息越少。缺省是 NOTICE。请注意 LOG 和 client_min_messages 里面的同名级别优先级不同。只有超级用户可以修改这个设置。

show log_min_messages;

这个选项控制那些信息发送到客户端。有效的数值是 DEBUG5,DEBUG4, DEBUG3,DEBUG2, DEBUG1,LOG,NOTICE, WARNING 和 ERROR。每个级别包含所有它后面的级别,级别越靠后,发送的信息越少。缺省是 NOTICE。这里的 LOG 和 log_min_messages 里面的有不同的级别。

show client_min_messages;

搜索数据库服务日志文件

通过gplogfilter工具来查找匹配指定标准的日志数据;默认只查找默认目录下的Master日志文件。
例如, 显式master日志文件的最近3行记录

$ gplogfilter –n 3

也可以使用gplogfilter+gpssh工具组合在所有segment节点进行查找
例如,显式每个segment日志文件的最近三行

$ gpssh –f seg_host_file

=> gplogfilter –n 3 /data/primary//pg_log/gpdb.csv

程序日志文件

缺省位于~/gpAdminLogs目录下
命令方式:<script_name>_<date>.log
日志记录的格式:
<timestamp>:<utility>:<host>:<user>:[INFO|WARN|FATAL]:<message>

5.系统数据字典存

所有的系统数据字典存放在pg_catalog模式下
标准的PostgreSQL系统数据字典为 pg_*
GP特有的字典目录:
gp_configuration
gp_distribution_policy
gp_distributed_log
gp_id
gp_version_at_initdb
gp_master_mirroring
gp_pgdatabase

在psql中列出所有的系统字典:\dtS
在psql中列出所有的系统视图:\dvS

posted @ 2025-06-26 15:46  数据库小白(专注)  阅读(63)  评论(0)    收藏  举报