Greenplum数据库常用命令大全

SQL herman 2618浏览 0评论
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog,发送下载链接帮助你免费下载!
本博客日IP超过1800,PV 2600 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog,之前的微信号好友位已满,备注:返现
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领

数据库启动:gpstart

常用可选参数:

-a:直接启动,不提示终端用户输入确认

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

数据库停止:gpstop

常用可选参数:

-a:直接停止,不提示终端用户输入确认

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

-M fast:停止数据库,中断所有数据库连接,回滚正在运行的事务

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

-f:强制停止数据库

-r: 重启数据库

查看实例配置和状态

select * from gp_segment_configuration order by 1 ;

主要字段说明:

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

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

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

Port:实例运行的端口

Datadir:实例对应的数据目录

注实例配置的数据表:gp_segment_configuration 、pg_filespace_entry、gp_fault_strategy;

其它常用的系统表:pg_class,pg_attribute,pg_database,pg_tables……

可以用tab来匹配表名;

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

常用可选参数:

-c:primary instance 和 mirror instance 的对应关系 

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

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

-s:查看详细状态,如在同步,可显示数据同步完成百分比

–version,查看数据库version(也可使用pg_controldata查看数据库版本和postgresql版本)

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

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

select * from pg_stat_activity 

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

ps -ef |grep -i postgres |grep -i con

pg_backend_pid();

pg_cancel_backend(integer)

查看数据库、表占用空间

select pg_size_pretty(pg_relation_size('schema.tablename'));(与pg_tables子查询查看所有表的占用空间)

select pg_size_pretty(pg_database_size('databasename));必须在数据库所对应的存储系统里,至少保留30%的自由空间,日常巡检,要检查存储空间的剩余容量。

set gp_enable_multiphase_agg=on;

收集统计信息,回收空间

定期使用Vacuum analyze tablename 回收垃圾和收集统计信息,尤其在大数据量删除,导入以后,非常重要、需要定期对数据字典做vacuum和reindex ,如pg_class,pg_attribute等系统表。

可以gp_toolkit.gp_bloat_diag看膨胀很大的表;

Alter table可以用来代替vacuum full 回收空间(除了系统表):

alter table test set with (reorganize=true);

查看数据分布情况

两种方式:

  • Select gp_segment_id,count(*) from  tablename  group by 1 ;
  • 在命令运行:gpskew -t public.ate -a postgres

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

登录每一个实例数据库的方法

PGOPTIONS='-c gp_session_role=utility' psql  dbname  –p  xxxx

可以通过这个命令登录实例,一般用于检测单个实例是否运行正常,还有就是用于在集群发生不一致时(只有在非常特殊的情况下才有可能发生,如表不一致等),进行表维护

实例恢复:gprecoverseg

通过gpstate 或gp_segement_configuration 发现有实例down 掉以后,使用该命令进行恢复。

gprecoverseg -F强制恢复

查看锁信息

注:在Greenplum里(截至到4.0版本),INSERT 和COPY都是行级锁,UPDATE/DELETE都是表级锁;

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 标识了锁的类型

注:也可以通过pgadminIII的工具->服务器状态查看当前运行的SQL及锁等待情况。发生Deadlock时,系统自动让其中一个SQL失败,并提示deadlock信息。

explain

在提交大的查询之前,使用explain分析执行计划、发现潜在优化机会,避免将系统资源熬尽。explain analyze sql,将执行一次SQL,并行将过程中的具体cost和运行情况记录下来也可以用pgadminIII进行explain的图形化显示,进而来优化执行路径,如表关联策略等。

注:可以在Master的postgresql.conf中 修改log_min_duration_statement=5000sSQL运行耗时超过这个值得都在pg_log纪录SQL的实际耗时,用来监控耗时的SQL。

数据库并行备份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>:备份日志

gpcorndump:

可以用于备份数据库配置文件和全局数据(如角色、资源队列等)

Example:gpcrondump -x mydatabase  –u  /xxx/  -c -g –G –a –q >>$DATE.log

-g  备份postgresql.conf、pg_hba.conf、pg_ident.conf

-G  备份全局对象

-u  备份到的目录(如果没有-u,则数据备份到每个数据目录里面)

gpcrondump的文件可以用gp_restore恢复

  gp_restore –gp-c –gp-d=/data/backup/db_dumps/20110423/ –gp-k=20110423103328  -d gpadmin

也可以用gpdbresotre恢复:(需要数据在一个Host上)

gpdbrestoree  -R master=/data/backup/db_dumps/20110423

-T 可以只恢复其中的某表(比gp_dump多这个参数)

gpdbrestore -t 20120229182541 -T public.account

数据库恢复 gp_restore

必选参数:

–gp-k=key :key 为gp_dump 导出来的文件的后缀时间戳

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

串行备份

pg_dump/pg_dumpall

一般用于环境迁移和DDLFUNCTION等备份;

如:pg_dump  -s  -n public  demodb –f  demodb.sql ,将只备份demodb数据库中的public 下的所有DDL和FUNCTION,-s表示不备份数据;

恢复时,使用psql  -d demodb –f  demodb.sql

数据库僵尸进程处理

首先使用kill -15 去停止进程,kill -15 不响应,再用kill -11;一般情况下,不要用kill -9,否则可能导致数据库宕机且状态不一致,严重的导致数据库不能重新启动,可能需要用pg_resetxlog去重置日志,有可能导致数据丢失;

参数更改

通过gpconfig配置Master和所有Segment的postgresql.conf中参数。

EXAMPLES

gpconfig -c work_mem -v 120MB –masteronly

修改master上的work_mem =120MB

gpconfig -c max_connections -v 100 -m 10

修改Master上max_connections=10,Segment上修改成100

gpconfig -r default_statistics_target

注释参数,使用缺省参数

gpconfig –l

列出所有的参数

gpconfig -s max_connections   

显示某个参数

Greenplum其它常用命令

gpssh  -f  all_hosts—通过SSH同时访问多个节点,并可同时执行shell

gpcheckperf  –检查网络和硬盘性能

checkos  -f all_hosts –检查OS内核和参数

检查Disk性能

gpcheckperf -d /data/gpdb_p1 -d /data/gpdb_p2 -d /data/gpdb_p3  -d /data/gpdb_p4  -d /data/gpdb_p5  -d /data/gpdb_p6  -d /data/gpdb_p7  -d /data/gpdb_p8  -S 64GB  -r ds -D -v  -f hosts-setup

检查网络性能

gpcheckperf -d /data/gpdb_p1 -r N -f hosts-net0

gpcheckperf -d /data/gpdb_p1 -r N -f hosts-net1

gpcheckperf -d /data/gpdb_p1 -r N -f hosts-net2

gpcheckperf -d /data/gpdb_p1 -r N -f hosts-net3

Greenplum升级和扩容

1)Upgrade

–小版本升级:4.0.4 —> 4.0.5

替换/usr/local/greenplum-db即可

–大版本升级:3.3.7 —> 4.0.4

$gpmigrator

2)扩容

$gpexpand

CREATE EXTERNAL TABLE test_ext(

  id integer,

  name varchar(10),

  dt date

)LOCATION ('gpfdist://master:8081/test.txt')

 FORMAT 'text' (delimiter ',' null '\\N' escape '\\')

 ENCODING 'gb18030'

LOG ERRORS INTO error_table SEGMENT REJECT LIMIT 3 ;

nohup gpfdist -d /tmp/ -p 8081 &

版权声明:本文为博主原创文章,未经博主允许不得转载。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847(已满),QQ3群:187424846(已满)。QQ群进群密码:xttblog,想加微信群的朋友,之前的微信号好友已满,请加博主新的微信号:xttblog,备注:“xttblog”,添加博主微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » Greenplum数据库常用命令大全