greenplum6.7操作手册

管理数据库连接

登陆greenplum主机切换管理员用户

su gpadmin

数据库连接配置在pg_hba.conf中

vi $MASTER_DATA_DIRECTORY/pg_hba.conf 

可以看到访问连接可以配置为下面几种形式,下面还有一些系统默认的系统连接

 PostgreSQL Client Authentication Configuration File
# ===================================================
...
# local      DATABASE  USER  METHOD  [OPTIONS]
# host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostssl    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnossl  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
...
local    all         gpadmin         ident
host     all         gpadmin         127.0.0.1/28    trust
host     all         gpadmin         10.0.61.41/32       trust
host     all         gpadmin         ::1/128       trust
host     all         gpadmin         fe80::f816:3eff:fe71:578d/128       trust

官方文档上对于连接的相关说明

Field Description
local 匹配使用UNIX域套接字的连接尝试。如果没有此类记录,则不允许UNIX域套接字连接。
host 匹配使用TCP / IP进行的连接尝试。除非以适当的值启动服务器,否则无法进行远程TCP / IP连接。listen_addresses 服务器配置参数。
hostssl 匹配使用TCP / IP进行的连接尝试,但仅当使用SSL加密进行连接时才匹配。必须在服务器启动时通过设置SSL启用SSLssl 服务器配置参数。
hostnossl 匹配通过不使用SSL的TCP / IP进行的连接尝试。
database 指定此记录匹配的数据库名称。价值 所有指定它匹配所有数据库。可以使用逗号分隔多个数据库名称。可以通过在文件名之前添加一个包含数据库名的单独文件来指定 @。
role 指定此记录匹配的数据库角色名称。价值所有指定它匹配所有角色。如果指定的角色是一个组,并且您希望包括该组的所有成员,请在角色名称前添加一个+。可以使用逗号分隔多个角色名称。可以通过在文件名前添加一个包含角色名的单独文件来指定文件名@。
address 指定此记录匹配的客户端计算机地址。该字段可以包含IP地址,IP地址范围或主机名。IP地址范围是使用标准数字符号指定范围的起始地址,然后使用斜杠(/)和CIDR掩码长度。掩码长度表示必须匹配的客户端IP地址的高位位数。在给定的IP地址中,其右边的位应为零。IP地址之间不能有任何空格,/,以及CIDR掩码长度。这样指定的IPv4地址范围的典型示例是 172.20.143.89/32 对于单个主机,或 172.20.143.0/24 对于小型网络,或 10.6.0.0/16为更大的。IPv6地址范围可能看起来像:: 1/128 单个主机(在本例中为IPv6环回地址)或 fe80 :: 7a31:c1ff:0000:0000/96 用于小型网络。 0.0.0.0/0 代表所有IPv4地址,并且 :: 0/0代表所有IPv6地址。要指定单个主机,对于IPv4使用32的掩码长度,对于IPv6使用128的掩码长度。在网络地址中,请勿省略尾随零。以IPv4格式给出的条目将仅匹配IPv4连接,以IPv6格式给出的条目将仅匹配IPv6连接,即使所表示的地址在IPv4-in-IPv6范围内。注意:如果主机系统C库不支持IPv6地址,则IPv6格式的条目将被拒绝。如果指定了主机名(将非IP地址或IP范围的地址视为主机名),则将该名称与客户端IP地址的反向名称解析结果(例如,反向DNS查找)进行比较,如果使用DNS)。主机名比较不区分大小写。如果存在匹配项,则对主机名执行正向名称解析(例如,正向DNS查找)以检查其解析为的地址是否等于客户端IP地址。如果两个方向都匹配,则认为该条目匹配。某些主机名数据库允许将IP地址与多个主机名相关联,但是当系统要求您解析IP地址时,操作系统仅返回一个主机名。在中使用的主机名pg_hba.conf 必须是客户端IP地址的地址名称解析返回的内容,否则该行将不被视为匹配项。在中指定主机名时 pg_hba.conf,则应确保名称解析相当快。设置本地名称解析缓存(例如,光盘。另外,您可以启用服务器配置参数log_hostname 查看客户端主机名而不是日志中的IP地址。
IP-address IP-mask 这些字段可以用作CIDR地址表示法的替代方法。而不是指定掩码长度,而是在单独的列中指定实际掩码。例如,255.0.0.0 表示IPv4 CIDR掩码长度为8,并且 255.255.255.255 表示CIDR掩码长度为32。
authentication-method 指定连接时使用的身份验证方法。Greenplum支持PostgreSQL 9.4 支持的身份验证方法。

为了使用外部工具连接上我们增加一条

host     all         gpadmin         0.0.0.0/0   trust  # 新增规则允许任意ip 密码登陆

修改配置文件之后使用gpstop -u使配置生效

gpstop -u

使用navicat连接选择postgreSQL连接

查看运行的节点状态

使用gpstate可以查看当前运行节点的状态
查看运行的segment状态

gpstate -s

查看运行的mirror状态

gpstate -m

查看运行的standby状态

gpstate -f
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-Greenplum instance status summary
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Master instance                                           = Active
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Master standby                                            = sdw1
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Standby master state                                      = Standby host passive
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total segment instance count from metadata                = 8
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Primary Segment Status
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total primary segments                                    = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total primary segment valid (at master)                   = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total primary segment failures (at master)                = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files missing              = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files found                = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs missing               = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs found                 = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files missing                   = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files found                     = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes missing                 = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes found                   = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Mirror Segment Status
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total mirror segments                                     = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total mirror segment valid (at master)                    = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total mirror segment failures (at master)                 = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files missing              = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid files found                = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs missing               = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of postmaster.pid PIDs found                 = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files missing                   = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number of /tmp lock files found                     = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes missing                 = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number postmaster processes found                   = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number mirror segments acting as primary segments   = 0
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-   Total number mirror segments acting as mirror segments    = 4
20200603:17:37:02:029137 gpstate:mdw:gpadmin-[INFO]:-----------------------------------------------------

或者执行SQL:select * from gp_segment_configuration order by role,content;

6	0	m	m	s	u	7000	sdw2	sdw2	/data/data1/mirror/gpseg0
7	1	m	m	s	u	7001	sdw2	sdw2	/data/data2/mirror/gpseg1
8	2	m	m	s	u	7000	sdw1	sdw1	/data/data1/mirror/gpseg2
9	3	m	m	s	u	7001	sdw1	sdw1	/data/data2/mirror/gpseg3
1	-1	p	p	n	u	5432	mdw	mdw	/data/master/gpseg-1
2	0	p	p	s	u	6000	sdw1	sdw1	/data/data1/primary/gpseg0
3	1	p	p	s	u	6001	sdw1	sdw1	/data/data2/primary/gpseg1
4	2	p	p	s	u	6000	sdw2	sdw2	/data/data1/primary/gpseg2
5	3	p	p	s	u	6001	sdw2	sdw2	/data/data2/primary/gpseg3

使用psql

psql

弹出错误提示

psql: FATAL:  database "gpdw" does not exist

错误原因是没有这个用户和库

CREATE DATABASE gpdw WITH OWNER gpdw ENCODING 'UTF8';

报错

ERROR: source database "template1" is being accessed by other users

使用select * from pg_stat_activity where DATNAME = 'template1';
kill掉就可以创建了
再次使用psql

psql (9.4.24)
Type "help" for help.
gpdw=#

可以成功登陆了

psql指令说明

Connection options:
-h, --host=HOSTNAME database server host or socket directory (default: "/var/run/postgresql")
-p, --port=PORT database server port (default: "")
-U, --username=USERNAME database user name (default: "zhangjin")
-w, --no-password never prompt for password
-W, --password force password prompt (should happen automatically)

进入psql程序中的指令说明

help
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

导入导出数据

导出csv数据

\o /tmp/test.csv
select * from  tablename  limit 10000

或者
添加字段头导出

 psql -d  databasename   -h  localhost     -p 5432  -c "\copy (select * from  tablename  limit 10000 ) to /tmp/my_data2.csv  with csv header  delimiter '|' "  

不添加字段头导出

copy (select * from  dept_relation  limit 10000 ) to '/tmp/my_data2.csv' delimiter '|';

导入数据
1.使用copy

psql -d test -c "\\copy dept_relation  FROM '/tmp/my_data2.csv'"

2.使用gpfdist
开启gpfdist

gpfdist -d /home/admin -p 8081 -l /tmp/gpfdist.log &

-d 数据文件所放的目录,我这里的路径为/home/admin。
-p 设置访问gpfdist端口,这个可以根据实际情况写。
-l 设置日志文件所放的目录,这个参数也可以不用填写。
必须注意“&”这个符号绝对不能忘记填写,不然开始服务会失败。
创建外部表


psql -d test -c "CREATE EXTERNAL TABLE BTR_DEPT_INDEX_VALUE_OUT (  UNIT_CODE  VARCHAR,	UNIT_NAME   VARCHAR,	YEARMONTH   VARCHAR,	YEAR   VARCHAR,MONTH   VARCHAR,	RDATE   VARCHAR,IDX0020  FLOAT,	IDX0001  FLOAT,	IDX0011 	  FLOAT,IDX0004  FLOAT,IDX0005 	 FLOAT,IDX0003 	FLOAT,IDX0002 	FLOAT,IDX0006	 FLOAT,IDX0015 	FLOAT,IDX0010	 FLOAT,IDX0016 	FLOAT,IDX0014 	FLOAT,IDX0017 	FLOAT,IDX0009 	FLOAT,IDX0012 	FLOAT,IDX0018 	FLOAT,IDX0019 	FLOAT,IDX0023 	FLOAT,IDX0024 	FLOAT,IDX0025 	FLOAT,IDX0026 	FLOAT,IDX0027 	FLOAT,IDX0028 	FLOAT,IDX0029	 FLOAT,IDX0008	 FLOAT,IDX0013 	FLOAT,IDX0030 	FLOAT,IDX0031 	FLOAT,IDX0032 	FLOAT,IDX0033 	FLOAT,IDX0034 	FLOAT,IDX0035 	FLOAT,IDX0036 	FLOAT,IDX0037  FLOAT) LOCATION ('gpfdist://10.0.61.41:8181/50w1.txt') format 'text' (DELIMITER '|')"

插入目标表

psql -d test -c "insert into BTR_DEPT_INDEX_VALUE(UNIT_CODE  ,	UNIT_NAME   ,	YEARMONTH   ,	YEAR   ,MONTH   ,	RDATE   ,IDX0020  ,	IDX0001  ,	IDX0011 	  ,IDX0004  ,IDX0005 	 ,IDX0003 	,IDX0002 	,IDX0006	 ,IDX0015 	,IDX0010	 ,IDX0016 	,IDX0014 	,IDX0017 	,IDX0009 	,IDX0012 	,IDX0018 	,IDX0019 	,IDX0023 	,IDX0024 	,IDX0025 	,IDX0026 	,IDX0027 	,IDX0028 	,IDX0029	 ,IDX0008	 ,IDX0013 	,IDX0030 	,IDX0031 	,IDX0032 	,IDX0033 	,IDX0034 	,IDX0035 	,IDX0036 	,IDX0037  ) select UNIT_CODE  ,	UNIT_NAME   ,	YEARMONTH   ,	YEAR   ,MONTH   ,	RDATE   ,IDX0020  ,	IDX0001  ,	IDX0011 	  ,IDX0004  ,IDX0005 	 ,IDX0003 	,IDX0002 	,IDX0006	 ,IDX0015 	,IDX0010	 ,IDX0016 	,IDX0014 	,IDX0017 	,IDX0009 	,IDX0012 	,IDX0018 	,IDX0019 	,IDX0023 	,IDX0024 	,IDX0025 	,IDX0026 	,IDX0027 	,IDX0028 	,IDX0029	 ,IDX0008	 ,IDX0013 	,IDX0030 	,IDX0031 	,IDX0032 	,IDX0033 	,IDX0034 	,IDX0035 	,IDX0036 	,IDX0037   from BTR_DEPT_INDEX_VALUE_OUT"

3.使用gpload
gpload是对gpfdist的封装,首先需要开启gpfdist

gpfdist -d /home/admin -p 8181 -l /tmp/gpfdist.log &

创建装载数据的yml文件

vim gpload.yml
VERSION: 1.0.0.1
DATABASE: test
USER: gpadmin
HOST: 10.0.61.41
PORT: 5432
GPLOAD:
   INPUT:
    - SOURCE:
         LOCAL_HOSTNAME:
           - mdw
         PORT: 8181
         FILE:
           - /tmp/100w.txt
    - FORMAT: text
    - DELIMITER: '|'
    - QUOTE: '"'
    - HEADER: false
   OUTPUT:
    - TABLE: public.BTR_DEPT_INDEX_VALUE
    - MODE: INSERT
gpload -f gpload.yml 

列存储

CREATE TABLE table_name ( )
WITH ( storage_parameter=value [, ... ] ) ;     //指定存储空间
where storage_parameter is:                                 //指定创建表存在的参数:
   APPENDONLY={TRUE|FALSE}                                  //指定是否可以appendonly
   BLOCKSIZE={8192-2097152}                                  //指定表块大小
   ORIENTATION={COLUMN|ROW}                                 //指定表旋转方式
   COMPRESSTYPE={ZLIB|QUICKLZ|RLE_TYPE|NONE} //指定表的压缩方式
   COMPRESSLEVEL={0-9}                                        //指定表的压缩级别
   FILLFACTOR={10-100}                                      //指定表的占空因数
   OIDS[=TRUE|FALSE]                                         //指定表的对象标识符

实例

CREATE TABLE table_xx(id int,n1 varchar,n2 varchar,n3 varchar)
WITH (appendonly=true,orientation=column,compresstype=zlib,COMPRESSLEVEL=5)
distributed by (id);

表存储,压缩,排列方式在创建表的时候已经定义完毕,不能更改,如需更改,需重新定义表结构

CREATE TABLE sales2 (LIKE sales)
WITH (appendonly=true, compresstype=quicklz, compresslevel=1, rientation=column);
INSERT INTO sales2 SELECT * FROM sales;
DROP TABLE sales;
ALTER TABLE sales2 RENAME TO sales;
GRANT ALL PRIVILEGES ON sales TO admin;
GRANT SELECT ON sales TO guest;

使用gpconfig优化数据库

此方式等同于修改Master节点中$MASTER_DATA_DIRECTORY/postgresql.conf配置文件和$SEGMENT_DATA_DIRECTORY/postgresql.conf配置文件,都属于系统级别的参数修改
使用方法
查看参数:

gpconfig -s [参数]

修改参数

gpconfig -c [参数] -v [Segment] -m [Master]

修改完参数后需要重启数据库才能使参数生效

gpstop -r

例如
配置最大连接数

gpconfig -s max_connections
gpconfig -c max_connections -v 3000 -m 1500
gpstop -r

详细全部参数:http://docs.greenplum.org/6-4/ref_guide/config_params/guc_category-list.html
常用参数:

name desc 计算公式
max_connections 最大连接数,Segment建议设置成Master的5-10倍。
max_prepared_transactions 这个参数只有在启动数据库时,才能被设置。它决定能够同时处于prepared状态的事务的最大数目(参考PREPARE TRANSACTION命令)。如果它的值被设为0。则将数据库将关闭prepared事务的特性。它的值通常应该和max_connections的值一样大。每个事务消耗600字节(b)共享内存
gp_resqueue_priority_cpucores_per_segment master和每个segment的可以使用的cpu个数,每个segment的分配线程数;
max_statement_mem 设置每个查询最大使用的内存量,该参数是防止statement_mem参数设置的内存过大导致的内存溢出.
statement_mem 设置每个查询在segment主机中可用的内存,该参数设置的值不能超过max_statement_mem设置的值,如果配置了资源队列,则不能超过资源队列设置的值。
gp_vmem_protect_limit 控制了每个segment数据库为所有运行的查询分配的内存总量。如果查询需要的内存超过此值,则会失败。 gp_vmem = ((SWAP + RAM) – (7.5GB + 0.05 * RAM)) / 1.7 gp_vmem_protect_limit = gp_vmem / acting_primary_segments
gp_statement_mem 服务器配置参数 gp_statement_mem 控制段数据库上单个查询可以使用的内存总量。如果语句需要更多内存,则会溢出数据到磁盘。
shared_buffers 只能配置segment节点,用作磁盘读写的内存缓冲区,开始可以设置一个较小的值,比如总内存的15%,然后逐渐增加,过程中监控性能提升和swap的情况。 > 16K * max_connections
effective_cache_size (master节点,可以设为物理内存的85%)这个参数告诉PostgreSQL的优化器有多少内存可以被用来缓存数据,以及帮助决定是否应该使用索引。这个数值越大,优化器使用索引的可能性也越大。因此这个数值应该设置成shared_buffers加上可用操作系统缓存两者的总量。通常这个数值会超过系统内存总量的50%以上。
temp_buffers 即临时缓冲区,拥有数据库访问临时数据,GP中默认值为1M,在访问比较到大的临时表时,对性能提升有很大帮助。
work_mem work_mem(,global,物理内存的2%-4%),segment用作sort,hash操作的内存大小当PostgreSQL对大表进行排序时,数据库会按照此参数指定大小进行分片排序,将中间结果存放在临时文件中,这些中间结果的临时文件最终会再次合并排序,所以增加此参数可以减少临时文件个数进而提升排序效率。当然如果设置过大,会导致swap的发生,所以设置此参数时仍需谨慎。

使用sql

select * from pg_settings;

可以查看全部的数据库配置

greenplum日志目录

greenplum6.7操作手册_第1张图片

恢复down掉的节点

首先产生一个恢复的配置文件 : gprecoverseg -o ./recov
其次,执行 gprecoverseg -i ./recov进行恢复

查询当前的连接

查询当前连接数

select count(1) from pg_stat_activity;

本机的设置

Master参数

max_connections=500
max_prepared_transactions=500
shared_buffers=256MB
gp_resqueue_priority_cpucores_per_segment=8

segment参数

max_connections=2500
max_prepared_transactions=2500
temp_buffers=128MB
statement_mem=512MB
shared_buffers=256MB
gp_resqueue_priority_cpucores_per_segment=4

常用命令

启动
gpstart
重启
gpstop -r 调用的是pg_hba.conf

加载变更的配置
gpstop -u 调用的是postgresql.conf

启用维护模式
gpstart -m

链接到主节点维护
PGOPTIONS=’-c gp_session_role=utility’ psql template1

结束维护
gpstop -m

关闭数据库
gpstop

快速关闭gp,会kill客户端
gpstop -M fast

配置服务器以及segment的参数
gpconfig -c gp_vmem_protect_limit -v 4096MB
gpstop -r

session级别的绘画不需要重启数据库
gpstop -u
参数的改变需要重启数据库
gpstop -r

你可能感兴趣的:(数据库)