Bootstrap

Greenplum常用命令

1. gpstate

命令

参数

=> 作用

gpstate

-b

=> 显示简要状态

gpstate

-c

=> 显示主镜像映射

gpstart

-d

=> 指定数据目录(默认值:$ MASTER_DATA_DIRECTORY)

gpstate

-e

=> 显示具有镜像状态问题的片段

gpstate

-f

=> 显示备用主机详细信息

gpstate

-i

=> 显示GRIPLUM数据库版本

gpstate

-m

=> 显示镜像实例同步状态

gpstate

-p

=> 显示使用端口

gpstate

-Q

=> 快速检查主机状态

gpstate

-s

=> 显示集群详细信息

gpstate

-v

=> 显示详细信息

2. gpconfig

命令

参数

=> 作用

gpconfig

-c

=> --change param_name 通过在postgresql.conf 文件的底部添加新的设置来改变配置参数的设置。

gpconfig

-v

=> --value value 用于由-c选项指定的配置参数的值。默认情况下,此值将应用于所有Segment及其镜像、Master和后备Master。

gpconfig

-m

=> --mastervalue master_value 用于由-c 选项指定的配置参数的Master值。如果指定,则该值仅适用于Master和后备Master。该选项只能与-v一起使用。

gpconfig

-masteronly

=>当被指定时,gpconfig 将仅编辑Master的postgresql.conf文件。

gpconfig

-r

=> --remove param_name 通过注释掉postgresql.conf文件中的项删除配置参数。

gpconfig

-l

=> --list 列出所有被gpconfig工具支持的配置参数。

gpconfig

-s

=> --show param_name 显示在Greenplum数据库系统中所有实例(Master和Segment)上使用的配置参数的值。如果实例中参数值存在差异,则工具将显示错误消息。使用-s=>选项运行gpconfig将直接从数据库中读取参数值,而不是从postgresql.conf文件中读取。如果用户使用gpconfig 在所有Segment中设置配置参数,然后运行gpconfig -s来验证更改,用户仍可能会看到以前的(旧)值。用户必须重新加载配置文件(gpstop -u)或重新启动系统(gpstop -r)以使更改生效。

gpconfig

--file

=> 对于配置参数,显示在Greenplum数据库系统中的所有Segment(Master和Segment)上的postgresql.conf文件中的值。如果实例中的参数值存在差异,则工具会显示一个消息。必须与-s选项一起指定。

gpconfig

--file-compare

对于配置参数,将当前Greenplum数据库值与主机(Master和Segment)上postgresql.conf文件中的值进行比较。

gpconfig

--skipvalidation

覆盖gpconfig的系统验证检查,并允许用户对任何服务器配置参数进行操作,包括隐藏参数和gpconfig无法更改的受限参数。当与-l选项(列表)一起使用时,它显示受限参数的列表。 警告: 使用此选项设置配置参数时要格外小心。

gpconfig

--verbose

在gpconfig命令执行期间显示额外的日志信息。

gpconfig

--debug

设置日志输出级别为调试级别。

gpconfig

-? | -h | --help

显示在线帮助。

3. gpstart

命令

参数

=> 作用

gpstart

-a

=> 快速启动|

gpstart

-d

=> 指定数据目录(默认值:$ MASTER_DATA_DIRECTORY)

gpstart

-q

=> 在安静模式下运行。命令输出不显示在屏幕,但仍然写入日志文件。

gpstart

-m

=> 以维护模式连接到Master进行目录维护。例如:$ PGOPTIONS=’-c gp_session_role=utility’ psql postgres

gpstart

-R

=> 管理员连接

gpstart

-v

=> 显示详细启动信息

4. gpstop

命令

参数

=> 作用

gpstop

-a

=> 快速停止

gpstop

-d

=> 指定数据目录(默认值:$ MASTER_DATA_DIRECTORY)

gpstop

-m

=> 维护模式

gpstop

-q

=> 在安静模式下运行。命令输出不显示在屏幕,但仍然写入日志文件。

gpstop

-r

=> 停止所有实例,然后重启系统

gpstop

-u

=> 重新加载配置文件 postgresql.conf 和 pg_hba.conf

gpstop

-v

=> 显示详细启动信息

gpstop

-M fast

=> 快速关闭。正在进行的任何事务都被中断。然后滚回去。

gpstop

-M immediate

=> 立即关闭。正在进行的任何事务都被中止。不推荐这种关闭模式,并且在某些情况下可能导致数据库损坏需要手动恢复。

gpstop

-M smart

=> 智能关闭。如果存在活动连接,则此命令在警告时失败。这是默认的关机模式。

gpstop

--host hostname

=> 停用segments数据节点,不能与-m、-r、-u、-y同时使用

5. 集群恢复

命令

参数

=> 作用

gprecoverseg

-a

=> 快速恢复

gprecoverseg

-i

=> 指定恢复文件

gprecoverseg

-d

=> 指定数据目录

gprecoverseg

-l

=> 指定日志文件

gprecoverseg

-r

=> 平衡数据

gprecoverseg

-s

=> 指定配置空间文件

gprecoverseg

-o

=> 指定恢复配置文件

gprecoverseg

-p

=> 指定额外的备用机

gprecoverseg

-S

=> 指定输出配置空间文件

6. 激活备库流程

命令

参数

=> 作用

gpactivatestandby

-d 路径

| 使用数据目录绝对路径,默认:$ MASTER_DATA_DIRECTORY

gpactivatestandby

-f

| 强制激活备份主机

gpactivatestandby

-v

| 显示此版本信息

7. 初始化备Master

命令

参数

=> 作用

gpinitstandby

-s 备库名称

=> 指定新备库

gpinitstandby

-D

=> debug 模式

gpinitstandby

-r

=> 移除备用机

Greenplum参数调优

1  查看每个segment的内存配置参数

1.1 查看分配内存信息

gpconfig -s gp_vmem_protect_limit

在以上可以看出segment使用了系统默认的内存配置8192MB,改参数按照机器的内存大小可以适当的调大,详见计算如下:

1、计算公式可参考如下:(mem+swap)* 0.9 /单个节点 segment 数量

2、例如master节点上有252G的内存,segment个数为2个,分配最高的内存为:

252*0.9 / 2 ≈ 110GB(112640 MB)

78643

3、例如数据节点上有252G的内存,segment个数为12个,分配最高的内存为:

252*0.9/12 ≈ 18GB(18432MB)

39321

1.2 修改内存参数

登录到master节点上执行以下命令即可

gpconfig -c gp_vmem_protect_limit -m 112640 -v 18432

-c : 改变参数的名称

-m : 修改主备master的内存的大小一般的和-v一块使用

-v : 此值用于所有的segments,mirrors和master的修改 

2 查看shared_buffers(共享缓冲区)的内存

2.1 查看系统配置的参数

$ gpconfig -s shared_buffers

2.2 参数详解

只能配置segment节点,用作磁盘读写的内存缓冲区,开始可以设置一个较小的值,比如总内存的15%,然后逐渐增加,过程中监控性能提升和swap的情况。以上的缓冲区的参数为125MB,此值不易设置过大,过大或导致以下错误

[WARNING]:-FATAL: DTM initialization: failure during startup recovery, retry failed, check segment status (cdbtm.c:1603),详细的配置请查看

2.3 修改参数

修改配置

gpconfig -c shared_buffers -v 1024MB
gpconfig -r shared_buffers -v 1024MB 

3 查看max_connections(最大连接数)

3.1 查看最大连接数参数

$ gpconfig -s max_connections

3.2 参数详解

此参数为客户端链接数据库的连接数,按照个人数据库需求配置,参数详解请查看: 

4 查看block_size(磁盘块)的大小

4.1 查看磁盘块的大小

$ gpconfig -s block_size

4.2 参数详解

此参数表示表中的数据以默认的参数32768 KB作为一个文件,参数的范围8192KB - 2MB ,范围在8192 - 2097152 ,值必须是8192的倍数,使用时在blocksize = 2097152即可 

5 查看work_mem的值

5.1 查看集群中work_mem的配置大小

$ gpconfig -s work_mem

5.2 参数详解

work_mem 在segment用作sort,hash操作的内存大小当PostgreSQL对大表进行排序时,数据库会按照此参数指定大小进行分片排序,将中间结果存放在临时文件中,这些中间结果的临时文件最终会再次合并排序,所以增加此参数可以减少临时文件个数进而提升排序效率。当然如果设置过大,会导致swap的发生,所以设置此参数时仍需谨慎。刚开始可设置总内存的5%

5.3 修改参数

修改系统配置文件,重启集群使之生效

gpconfig -c work_mem -v 128MB

或在客户端session设置此参数

SET work_mem TO '64MB'

销毁session参数为:

reset work_mem; 

6 查看statement_mem的值

6.1 查看集群中statement_mem的值

$ gpconfig -s statement_mem

6.2 参数详解

设置每个查询在segment主机中可用的内存,该参数设置的值不能超过max_statement_mem设置的值,如果配置了资源队列,则不能超过资源队列设置的值。

6.3 修改参数

修改配置后重启生效

gpconfig -c statement_mem -v 256MB 

7 查看gp_workfile_limit_files_per_query的值

7.1 查看此值的大小

$ gpconfig -s gp_workfile_limit_files_per_query

7.1 参数详解

SQL查询分配的内存不足,Greenplum数据库会创建溢出文件(也叫工作文件)。在默认情况下,一个SQL查询最多可以创建 100000 个溢出文件,这足以满足大多数查询。

该参数决定了一个查询最多可以创建多少个溢出文件。0 意味着没有限制。限制溢出文件数据可以防止失控查询破坏整个系统。

如果数据节点的内存是512G的内存,表的压缩快的大小(block_size)是2M的话,计算为: 512G + 2 * 1000000 / 1024 ≈ 707 G 的空间,一般的表都是可以的,一般的此值不需要修改 

8 查看gp_resqueue_priority_cpucores_per_segment的值

8.1 查看此值的大小

$ gpconfig -s gp_resqueue_priority_cpucores_per_segment

8.2 参数详解

每个segment分配的分配的cpu的个数,例如:在一个20核的机器上有4个segment,则每个segment有5个核,而对于master节点则是20个核,master节点上不运行segment的信息,因此master反映了cpu的使用情况

8.3 修改参数

按照不同集群的核数以及segment修改此参数即可,下面的实例是修改成8核

gpconfig -c gp_resqueue_priority_cpucores_per_segment -v 8

;