Greenplum日常维护命令

文章目录

    • 1. 数据库启动:gpstart
    • 2. 数据库停止:gpstop
    • 3. 查看实例配置和状态
    • 4. gpstate :显示数据库运行状态,详细配置等信息
    • 5. 查看用户会话和提交的查询等信息
    • 6.查看数据库、表占用空间
    • 7.查看数据分布情况
    • 8.实例恢复:gprecoverseg
    • 9.数据库备份 gpcrondump
    • 10.数据库恢复 gpdbrestore
    • 11.参数查询
    • 12.创建数据库
    • 13.创建GP文件系统
    • 15.查看segment配置
    • 16.文件系统
    • 17. ldpipe 外部表创建方法

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_segment_configuration order by 1 ;

主要字段说明:
Content:该字段相等的两个实例,是一对P(primary instance)和M(mirror
Instance)
Isprimary:实例是否作为primary instance 运行
Valid:实例是否有效,如处于false 状态,则说明该实例已经down 掉。
Port:实例运行的端口
Datadir:实例对应的数据目录

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

常用可参数:-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.查看数据分布情况

两种方式:

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

在命令运行:gpskew -t public.ate -a postgres
如数据分布不均匀,将发挥不了并行计算的优势,严重影响性能。

8.实例恢复:gprecoverseg

通过gpstate 或gp_segment_configuration 发现有实例down 掉以后,使用该命令进行回复。
Select * from gp_segement_configuration;
gpstate -e 看恢复进度 -s恢复状态 -m 查看mirror节点的状态
gprecoverseg -r 恢复角色

gprecoverseg -o ./recover.info 导出错误节点信息
gprecoverseg -i recover.info 恢复错误节点

9.数据库备份 gpcrondump

全量备份

gpcrondump -a -C --dump-stats -g -G -h -r --use-set-session-authorization -x dbname -u backupdir --prefix dbid -l logdir -d masterdir -K now

增量备份

gpcrondump -a -C --dump-stats -g -G -h -r --use-set-session-authorization -x dbname -u backupdir --incremental --prefix dbid -l logdir -d masterdir -K now

dbname 备份数据库的名字
backupdir 备份数据路径
dbid 会添加到文件名中
logdir 日志文件的路径
masterdir 主节点的数据目录
now 备份的时间
注意点:

  1. 不支持指定备份用的超级用户名,默认在gpcrondump中会让pg_dump去调用OS对应的用户名.
  2. 备份language handler, create database的DDL时,没有使用双引号引用。 如果用户名包含除小写字母和下划线以外的字符,在还原是会报错。
  3. 不支持删除模板库,在使用gpdbrestore恢复时,如果使用了-e来清除库,会导致失败。
  4. copy需要大量的内存,可能触发OOM。
  5. 执行gpcrondump时,会使用getcwd获得当前目录,所以不能在一个不存在的目录环境下执行.

10.数据库恢复 gpdbrestore

gpdbrestore -a -e -d masterdir --prefix dbid -u backupdir --restore-stats include --report-status-dir logdir -t dumpid

backupdir 备份数据路径
dbid 会添加到文件名中
logdir 日志文件的路径
masterdir 主节点的数据目录
dumpid备份的时间

注意点:

  1. gpdbrestore -e 参数表示恢复前是否执行 drop database, 然后执行 create database。
  2. 如果 gpcrondump 时使用了-C 参数, 则恢复时会先执行DROP TABLE再执行建表的动作。
  3. 如果 gpcrondump 时没有使用 -C 参数,参数恢复时想先清理数据的话,可以使用gpdbrestore的–truncate参数
    (–truncate只能是表级恢复模式下使用, 即与-T . 或 --table-file 一同使用)
  4. Greenplum不允许删除模板库, 所以如果使用-e恢复模板库,会报错。 解决方法是改gpcrondump代码,对于模板库特殊处理,例如drop schema的方式清理模板库, 跳过模板库的DROP database报错以及create database 报错。

11.参数查询

psql -c 'SHOW ALL;' -d database
gpconfig --show max_connections

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

12.创建数据库

createdb dhdw
或者
psql postgres
create database dhdw

13.创建GP文件系统

文件系统名
gpfsdw
子节点,视segment数创建目录

mkdir -p /gpfsdw/seg1
mkdir -p /gpfsdw/seg2
chown -R lotus:lotus/gpfsdw

主节点
mkdir -p /gpfsdw/master
chown -R lotus:lotus/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;

15.查看segment配置

select * from gp_segment_configuration;

16.文件系统

select * from pg_filespace_entry;

17. ldpipe 外部表创建方法

S3外部表

create external table test_1(
xxx xxx,
xxx xxx,
xxx xxx
)
location('ldpipe://localhost:50031/s3/文件路径/*?bucket= , host= , port= , accesskey= , secretkey=, delimiter=\001 , escape=\001 , lazyquote=true')
format 'csv';

bucket是桶名 host是访问的ip prot是访问的端口 accesskey是访问key secretkey是安全key
lazyquote是指定忽略转义字符的开关;,false是关闭忽略转义字符,ture是开启忽略转义字符,默认是false关闭忽略转义字符。

ldb(postgres)外部表

create external table test_2(
xxx xxx,
xxx xxx,
xxx xxx
)
location('ldpipe://localhost:50031/ldsql/tablename')
format 'spq';

你可能感兴趣的:(Greenplum)