2024年1月24日发(作者:)

(word完整版)Greenplum 日常维护手册

Greenplum 日常维护手册

1. 数据库启动:gpstart

常用可选参数: -a : 直接启动,不提示终端用户输入确认

—m:只启动master 实例,主要在故障处理时使用

2。 数据库停止:gpstop:

常用可选参数:—a:直接停止,不提示终端用户输入确认

—m:只停止master 实例,与gpstart –m 对应使用

—M fast:停止数据库,中断所有数据库连接,回滚正在运

行的事务

-u:不停止数据库,只加载pg_hba。conf 和postgresql。conf中运行时参数,当改动参数配置时候使用。

评:—a用在shell里,最多用的还是-M fast。

3. 查看实例配置和状态

select * from gp_configuration order by 1 ;

主要字段说明:

Content:该字段相等的两个实例,是一对P(primary instance)和M(mirror

Instance)

Isprimary:实例是否作为primary instance 运行

Valid:实例是否有效,如处于false 状态,则说明该实例已经down 掉。

Port:实例运行的端口

Datadir:实例对应的数据目录

4. gpstate :显示Greenplum数据库运行状态,详细配置等信息

常用可选参数:-c:primary instance 和 mirror instance 的对应关系

-m:只列出mirror 实例的状态和配置信息

—f:显示standby master 的详细信息

-Q:显示状态综合信息

该命令默认列出数据库运行状态汇总信息,常用于日常巡检。

评:最开始由于网卡驱动的问题,做了mirror后,segment经常down掉,用-Q参数查询综合信息还是比较有用的.

第- 1 -页

(word完整版)Greenplum 日常维护手册

5. 查看用户会话和提交的查询等信息

select * from pg_stat_activity 该表能查看到当前数据库连接的IP 地址,用户名,提交的查询等。另外也可以在master 主机上查看进程,对每个客户端连接,master 都会创建一个进程。ps -ef |grep —i

postgres |grep —i con

评:常用的命令,我经常用这个查看数据库死在那个sql上了。

6。 查看数据库、表占用空间

select pg_size_pretty(pg_relation_size(’schema。tablename'));

select pg_size_pretty(pg_database_size(’databasename));

必须在数据库所对应的存储系统里,至少保留30%的自由空间,日常巡检,要检查存储空间的剩余容量.

评:可以查看任何数据库对象的占用空间,pg_size_pretty可以显示如mb之类的易读数据,另外,可以与pg_tables,pg_indexes之类的系统表链接,统计出各类关于数据库对象的空间信息。

7。 收集统计信息,回收空间

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

评:这个说的不全面,vacuum分两种,一种是analize,优化查询计划的,还有一种是清理垃圾数据,postres删除工作,并不是真正删除数据,而是在被删除的数据上,坐一个标记,只有执行vacuum时,才会真正的物理删除,这个非常重用,有些经常更新的表,各种查询、更新效率会越来越慢,这个多是因为没有做vacuum的原因。

8。 查看数据分布情况

两种方式:

l Select gp_segment_id,count(*) from tablename group by 1 ;

l 在命令运行:gpskew -t public。ate —a postgres

如数据分布不均匀,将发挥不了并行计算的优势,严重影响性能。

评:非常有用,gp要保障数据分布均匀。

9. 实例恢复:gprecoverseg

通过gpstate 或gp_configuration 发现有实例down 掉以后,使用该命令进行回复.

10。 查看锁信息:

SELECT locktype, database, e, l。relation, ctionid, ction, l。pid,

l。mode, d, a。current_query

FROM pg_locks l, pg_class c, pg_stat_activity a

WHERE l。relation=c。oid AND l。pid=a。procpid

ORDER BY e;

主要字段说明:

第- 2 -页

(word完整版)Greenplum 日常维护手册

relname: 表名

locktype、mode 标识了锁的类型

11。 explain:在提交大的查询之前,使用explain分析执行计划、发现潜在优化机会,避免将系统资源熬尽。

评:少写了个analyze,如果只是explain,统计出来的执行时间,是非常坑爹的,如果希望获得准确的执行时间,必须加上analyze。

12。 数据库备份 gp_dump

常用参数:-s: 只导出对象定义(表结构,函数等)

—n: 只导出某个schema

gp_dump 默认在master 的data 目录上产生这些文件:

gp_catalog_1_〈dbid〉_〈timestamp〉 :关于数据库系统配置的备份文件

gp_cdatabase_1_〈dbid〉_〈timestamp>:数据库创建语句的备份文件

gp_dump_1_:数据库对象ddl语句

gp_dump_status_1_:备份操作的日志

在每个segment instance 上的data目录上产生的文件:

gp_dump_0_

gp_dump_status_0_〈dbid〉_〈timestamp>:备份日志

13. 数据库恢复 gp_restore

必选参数:—-gp—k=key :key 为gp_dump 导出来的文件的后缀时间戳

—d dbname :将备份文件恢复到dbname

14.登陆与退出Greenplum

#正常登陆

psql gpdb

psql -d gpdb —h gphostm —p 5432 -U gpadmin

#使用utility方式

PGOPTIONS=”-c gp_session_role=utility" psql —h -d dbname hostname -p port

#退出

在psql命令行执行q

15。参数查询

psql -c ’SHOW ALL;' —d gpdb

gpconfig --show max_connections

评:这个有用,可以管道给grep.

创建数据库

第- 3 -页

(word完整版)Greenplum 日常维护手册

createdb —h localhost -p 5432 dhdw

创建GP文件系统

# 文件系统名

gpfsdw

# 子节点,视segment数创建目录

mkdir —p /gpfsdw/seg1

mkdir -p /gpfsdw/seg2

chown -R gpadmin:gpadmin /gpfsdw

# 主节点

mkdir -p /gpfsdw/master

chown —R gpadmin:gpadmin /gpfsdw

gpfilespace —o gpfilespace_config

gpfilespace —c gpfilespace_config

创建GP表空间

psql gpdb

create tablespace TBS_DW_DATA filespace gpfsdw;

SET default_tablespace = TBS_DW_DATA;

删除GP数据库

gpdeletesystem -d /gpmaster/gpseg-1 —f

查看segment配置

select * from gp_segment_configuration;

1.1.1

文件系统

select * from pg_filespace_entry;

1.1.2

磁盘、数据库空间

SELECT * FROM gp__disk_free ORDER BY dfsegment;

SELECT * FROM gp_toolkit。gp_size_of_database ORDER BY sodddatname;

1.1.3

日志

SELECT * FROM gp_toolkit.__gp_log_master_ext;

SELECT * FROM gp_toolkit.__gp_log_segment_ext;

1.1.4

表数据分布

SELECT gp_segment_id, count(*) FROM

表占用空间

SELECT relname as name, sotdsize/1024/1024 as size_MB, sotdtoastsize as toast,as other

FROM gp__size_of_table_disk as sotd, pg_class

WHERE d = pg_class。oid ORDER BY relname;

第- 4 -页

sotdadditionalsize

(word完整版)Greenplum 日常维护手册

1.1.6

索引占用空间

SELECT soisize/1024/1024 as size_MB, relname as indexname

FROM pg_class, gp__size_of_index

WHERE pg_class。oid = gp_size_of_

AND pg_class。relkind='i';

1.1.7

OBJECT的操作统计

SELECT schemaname as schema, objname as table, usename as role, actionname as action, subtype

as type, statime as time

FROM pg_stat_operations

WHERE objname = ’

1.1.8

SELECT locktype, database, e, l。relation, ctionid,d, t_query

FROM pg_locks l, pg_class c, pg_stat_activity a

WHERE on=

AND =d

ORDER BY e;

1.1.9

队列

SELECT * FROM pg_resqueue_status;

1.1.10

gpfdist外部表

# 启动服务

gpfdist -d /share/txt —p 8081 –l /share/txt/ &

# 创建外部表,分隔符为’/t’

drop EXTERNAL TABLE TD_APP_LOG_BUYER;

CREATE EXTERNAL TABLE TD_APP_LOG_BUYER (

IP text,

ACCESSTIME text,

REQMETHOD text,

URL text,

STATUSCODE int,

REF text,

name text,

VID text)

LOCATION (’gpfdist://gphostm:8081/')

FORMAT ’TEXT’ (DELIMITER E'/t'

FILL MISSING FIELDS) SEGMENT REJECT LIMIT 1 percent;

# 创建普通表

第- 5 -页

,, , ction

(word完整版)Greenplum 日常维护手册

create table test select * from TD_APP_LOG_BUYER;

# 索引

# CREATE INDEX idx_test ON test USING bitmap (ip);

# 查询数据

select ip , count(*) from test group by ip order by count(*);

1.1.11

gpload

# 创建控制文件

# 加载数据

gpload —f my_load。yml

1.1.12

copy

COPY country FROM ’/data/gpdb/country_data'

WITH DELIMITER '|’ LOG ERRORS INTO err_country

SEGMENT REJECT LIMIT 10 ROWS;

1.1.13

gpfdist外部表

# 创建可写外部表

CREATE WRITABLE EXTERNAL TABLE unload_expenses

( LIKE expenses )

LOCATION ('gpfdist://etlhost-1:8081/’,

’gpfdist://etlhost—2:8081/expenses2。out’)

FORMAT ’TEXT’ (DELIMITER ’,’)

DISTRIBUTED BY (exp_id);

# 写权限

GRANT INSERT ON writable_ext_table TO

# 写数据

INSERT INTO writable_ext_table SELECT * FROM regular_table;

1.1.14

copy

COPY (SELECT * FROM country WHERE country_name LIKE ’A%’) TO '/home/gpadmin/a_list_countries。out';

1.1.15

执行sql文件

psql gpdbname –f

或者psql登陆后执行

i

第- 6 -页