gp日常维护

news/2025/3/29 20:34:47/

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参数查询综合信息还是比较有用的。

 

 

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, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, 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 c.relname;

主要字段说明:

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_<dbid>_<timestamp>:数据库对象ddl语句

gp_dump_status_1_<dbid>_<timestamp>:备份操作的日志

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

gp_dump_0_<dbid>_<timestamp>:用户数据备份文件

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。

创建数据库

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;

文件系统

select * from pg_filespace_entry;

磁盘、数据库空间

SELECT * FROM gp_toolkit.gp_disk_free ORDER BY dfsegment;

SELECT * FROM gp_toolkit.gp_size_of_database ORDER BY sodddatname;

日志

SELECT * FROM gp_toolkit.__gp_log_master_ext;

SELECT * FROM gp_toolkit.__gp_log_segment_ext;

表数据分布

SELECT gp_segment_id, count(*) FROM <table_name> GROUP BY gp_segment_id;

表占用空间

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

   FROM gp_toolkit.gp_size_of_table_disk as sotd, pg_class

 WHERE sotd.sotdoid = pg_class.oid ORDER BY relname;

索引占用空间

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

 FROM pg_class, gp_toolkit.gp_size_of_index

 WHERE pg_class.oid = gp_size_of_index.soioid

  AND pg_class.relkind='i';

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 = '<name>';

SELECT locktype, database, c.relname, l.relation, l.transactionid, l.transaction, l.pid, l.mode, l.granted, 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 c.relname;

队列

SELECT * FROM pg_resqueue_status;

gpfdist外部表

# 启动服务

gpfdist -d /share/txt -p 8081 –l /share/txt/gpfdist.log &

# 创建外部表,分隔符为’/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/xxx.txt')

FORMAT 'TEXT' (DELIMITER E'/t'

FILL MISSING FIELDS) SEGMENT REJECT LIMIT 1 percent;

# 创建普通表

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(*);

gpload

# 创建控制文件

# 加载数据

gpload -f my_load.yml

copy

COPY country FROM '/data/gpdb/country_data'

 WITH DELIMITER '|' LOG ERRORS INTO err_country

 SEGMENT REJECT LIMIT 10 ROWS;

gpfdist外部表

# 创建可写外部表

CREATE WRITABLE EXTERNAL TABLE unload_expenses

( LIKE expenses )

LOCATION ('gpfdist://etlhost-1:8081/expenses1.out',

'gpfdist://etlhost-2:8081/expenses2.out')

FORMAT 'TEXT' (DELIMITER ',')

DISTRIBUTED BY (exp_id);

# 写权限

GRANT INSERT ON writable_ext_table TO <name>;

# 写数据

INSERT INTO writable_ext_table SELECT * FROM regular_table;

copy

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

执行sql文件

psql gpdbname –f yoursqlfile.sql

或者psql登陆后执行

\i yoursqlfile.sql


http://www.ppmy.cn/news/862698.html

相关文章

gp数据库和mysql区别_gp数据库(创建表分区)

1、创建数据库: create database 库名; 2、删除数据库: drop database 库名; 3、创建表: create table 表名( id integer, name text, price numeric {精确度较高的小数型,同mysql的decimal} ); 3-1、GP建表指定列级约束 create table 表名( id integer primary key, {主键…

计算机无法识别Gp80180,GP80160,GP80180网口修改IP设置教程

以下是图文教程 注:电脑没有光驱放光盘的,可以到这里下载,IP修改工具,和打印机驱动(下载完存放到电脑桌面) 1.IP修改工具下载地址: IP修改工具.rar 一、第一步查看路由器的网段是多少。 首先打开网络和共享中心XP系统是桌面打开 网上邻居 2.win7/8/10 系统 是电脑右下角打…

GP服务的使用详解

最近公司需要开发在线的WebGIS工具实现插值等功能&#xff0c;经过我的一番瞎几把研究&#xff0c;我发现目前只有ArcGIS Server发布GP工具可以实现这点&#xff08;ps:应该是有其他的在线js可以用&#xff0c;只是我没发现&#xff09;。于是乎就盯着GP服务去了&#xff0c;我…

【gp数据库】你可能不知道却超级实用的函数

常用操作 1.字符串分割2.字符串替换3.获取当前时间4.获取两个时间点相隔几天5.时间加减6.序列号生成7.多行值拼接8.字符串拆分成多行9.字符串加密10.字符串正则匹配11.字符串正则截取12.字段间比较大小13.有序集聚集函数14.分组函数15.窗口函数 1.字符串分割 函数&#xff1a;…

WGAN-GP 学习笔记

今天看到paperweekly上有人分享了一个WGAN-GP的实现&#xff0c;是以MNIST为数据集&#xff0c;代码简洁&#xff0c;结构清晰。我最近也在看GAN的相关内容&#xff0c;就下载下来做个参考。 代码地址&#xff1a;https://github.com/bojone/gan/ 对于这个基于tensorflow实现…

GP数据库安装以及使用

编 写 潘永雷 时 间 2017年04月13日 说明 本文档用于指导centos下安装gp greenplum-db-4.3.9.1-build-1-rhel5-x86_64.bin,不同环境可能略有不同,在文档所对应的环境下经验证安装成功 1、机器环境 1.1 系统信息 1 2 3 4 [gpadmin@sdw1 ~]$ uname -a Linux sdw1 2.6.32-642…

搭建GP服务

转&#xff1a;http://www.cnblogs.com/potential/archive/2012/10/27/2742355.html 在开始之前想说的话&#xff1a;以下是本人在摸索GP服务时的一点总结&#xff0c;因为很多人问到&#xff0c;所以在此小小的总结一下。由于时间仓促&#xff0c;所以不是很详细&#xff0c;看…

GP(greenplum)4 for RH Linux 6 安装详细过程

本文源自&#xff1a;https://www.cnblogs.com/liuyungao/p/5689588.html 1、准备 这里准备了4台服务器&#xff0c;1台做master&#xff0c;1台做standby&#xff0c;4台都做存储&#xff0c;为了保密真实的IP地址和主机名都换成“艺名”了。 OS:Red Hat Enterprise Linux Se…