文章目录
- 第三章 GreenPlum系统管理
- 1.关于GreenPlum数据库发布版本号
- 2.启动和停止GreenPlum数据库
- 2.1 启动数据库
- 2.2 重启数据库
- 2.3 仅重新载入配置文件更改
- 2.4 停止GreenPlum数据库
- 2.5 停止客户端进程
- 3.GreenPlum数据库状态查询
- 4.访问GreenPlum数据库
- 4.1 数据库会话参数
- 4.2 支持客户端应用
- 4.3 psql连接
- 4.4 常见的连接问题
第三章 GreenPlum系统管理
1.关于GreenPlum数据库发布版本号
GreenPlum的版本号和其组织方式的改变,界定了从一个版本到下一个版本做了哪些修改。
GreenPlum数据库的发布版本号采用格式:x.y.z,含义为:
-
x表示主版本号
-
y表示小版本号
-
z表示补丁版本号
1)具有相同主版本号的GP数据库保证在该版本下具有向后兼容性;2)当GP数据库的元数据目录修改或不适配的特性改变出现或新特性被引入时,才会增加主版本号;3)之前版本中被注释掉的功能在新的主版本发布时可能被移除;4)当出现向后兼容的问题修复时,GP数据库会在某一小版本号的基础上增加补丁版本号;
2.启动和停止GreenPlum数据库
在一个GreenPlum数据库管理系统中,所有主机上的数据库实例(Master和所有的Sgement)一起被启动或停止,启停操作统一由Master实例发起,它们步调一致,在外界看来是一个完成的数据库管理系统。
由于常规的GreenPlum数据库系统分布在很多的机器上,启停与普通的PostgreSQL略有不同。需要分别使用GreenPlum的Master节点&GPHOME/bin目录下的gpstart和gpstop实现。
注意:不要使用kill命令来关闭任何后台的数据库进程,可能会损坏数据库且不利于数据库问题分析。可以使用数据库内的命令pg_cancel_backend()来处理
2.1 启动数据库
在Master实例上,通过执行gpstart可以启动一个初始化好的GreenPlum数据库系统。前提是该数据库系统已经被gpstop工具停止。gpstart通过启动整个GreenPlum数据库集群中的所有Postgres数据库实例来启动GreenPlum数据库。gpstart会精心安排这一过程并且以并行的方式执行。
$ gpstart
2.2 重启数据库
停止GreenPlum数据库系统然后重启。执行gpstop工具并带有-r选项,会停止GreenPlum数据库并在数据库完全关闭后重新启动它。
$ gpstop -r
2.3 仅重新载入配置文件更改
重新载入对GreenPlum数据库配置文件更改而不中断系统。gpstop工具可以在不中断服务的前提下重新载入对pg_hba.conf配置文件和Master上postgresql.conf、pg_hba.conf文件中运行参数进行更改。
$ gpstop -u
2.4 停止GreenPlum数据库
gpstop工具可以停止或者重启GreenPlum数据库系统,它总是运行在Master主机上。当被激活时,gpstop会停止系统中所有的postgres进程,包括Master和所有Segment实例。
-
常规停止GreenPlum数据库
$ gpstop
-
快速模式停止GreenPlum数据库
$ gpstop -M fast
默认情况下,如果有任何客户端连接存在,就不允许关闭GreenPlum数据库。使用-M fast选项可以在关闭前回滚所有正在进行中的事务并且中断所有连接。
2.5 停止客户端进程
GreenPlum数据库会为每个客户端连接唤起一个后台进程。具有superuser权限的用户可以取消或直接终止这些客户端进程。使用pg_cancel_backend()
函数可以取消某个活动查询或队列中的后台进程;使用pg_terminate_backend()
函数可以直接终断GreenPlum数据库的客户端连接。
pg_cancel_backend()函数有两种表现形式:
pg_cancel_backend(pid int4)
pg_cancel_backend(pid int4, msg text)
pg_terminate_backend()函数有两种表现形式:
pg_terminate_backend(pid int4)
pg_terminate_backend(pid int4, msg text)
如果提供了msg信息,GreenPlum数据库会将取消的msg内容一并返回给客户端。msg最大为128字节;任何超出该长度的信息都会被GreenPlum数据库直接截断。执行成功返回true,否则返回false。
1)pg_stat_activity查询后台进程
查询到的结果中,可以根据pid取消进程
2)取消后台进程
如下所示,取消进程并返回msg提示客户端
postgres=# select pg_cancel_backend(28743,'admin cancel the query');
ERROR: canceling statement due to user request: "admin cancel the query"
3.GreenPlum数据库状态查询
gpstate :显示数据库运行状态,详细配置等信息
该命令默认列出数据库运行状态汇总信息,常用于日常巡检。
- -c:primary instance 和 mirror instance 的对应关系
- -m:只列出mirror 实例的状态和配置信息
- -f:显示standby master 的详细信息
- -Q:显示状态综合信息
4.访问GreenPlum数据库
4.1 数据库会话参数
用户可以通过使用一种PostgreSQL兼容的客户端程序连接到GreenPlum数据库,例如psql。用户和管理员总是通过master连接到GreenPlum数据库,Segment不能接受客户端连接。
为了建立一个到GreenPlum数据库Master的连接,用户将需要知道下列连接信息并且相应的配置用户的客户端程序。
连接参数 | 描述 | 环境变量 |
---|---|---|
应用名称 | 连接数据库的应用名称,保存在application_name连接参数中,默认psql。 | $PGAPPNAME |
数据库名 | 用户想要连接数据库的名称,初始化系统,第一次可使用postgres数据库连接。 | $PGDATABASE |
主机名 | GreenPlum数据库Master主机名,默认是本地主机。 | $PGHOST |
端口 | GreenPlum数据库Master实力端口号,默认是5432。 | $PGPORT |
用户名 | 连接用户的数据库用户。 | $PGUSER |
4.2 支持客户端应用
用户可以使用多种客户端连接到数据库:
1)用户的GreenPlum安装中已经提供了一些GreenPlum数据库客户端应用psql客户端应用提供了一种对GreenPlum数据库的交互式命令行接口。
2)使用标准的数据库应用接口,如ODBC和JDBC,用户可以创建他们自己的客户端来连接到GreenPlum数据库。因为GreenPlum数据库基于PostgreSQL开发,所以它使用标准的PostgreSQL数据库驱动。
3)大部分使用ODBC和JDBC等标准数据库接口的客户端工具都可以被配置来连接到GreenPlum数据库。
4.3 psql连接
如果是刚安装的数据库,可以连接到Postgres数据库来访问系统,例如:
[gpadmin@b0c0fe56c048 /]$ psql postgres
psql (9.4.24)
Type "help" for help.postgres=#
-
psql
[gpadmin@b0c0fe56c048 /]$ psql psql (9.4.24) Type "help" for help.postgres=#
-
psql database
[gpadmin@b0c0fe56c048 /]$ psql zxy psql (9.4.24) Type "help" for help.zxy=#
-
psql -d database -h host -p port -U user
[gpadmin@b0c0fe56c048 /]$ psql -d zxy -h localhost -p 5432 -U gpadmin psql (9.4.24) Type "help" for help.zxy=#
4.4 常见的连接问题
1)没有用于主机或者用户的pg_hba.conf配置
要允许GreenPlum数据库接受远程客户端连接,用户需配置用户的GreenPlum数据库的Master实例,这样主机客户端和数据库用户连接才会被连接到GreenPlum数据库。可以通过pg_hba.conf配置文件中增加合适的条目。
2)GreenPlum数据库没有运行
GreennPlum数据库的Master实例没有运行,用户将无法连接。用户可以通过在GreenPlum的Master主机上运行gpstate工具来验证GreenPlum数据库系统是否正常运行。
3)网络问题Interconnect超时
如果用户从一个远程客户端连接到GreenPlum的Master主机,网络问题可能阻止连接。为了确认网络问题等原因,可以尝试从远程客户端连接到GreenPlum的Master主机。
4)有太多客户端连接
默认情况下,GreenPlum数据库被配置在Master和每个Segement上分别最多250和750个并发用户连接。导致该限制会被超过的连接尝试将被拒绝。这个限制由GreenPlum数据库Master的postgresql.conf配置文件中的max_connections参数控制。如果用户为master更改了这个设置,用户还必须在Segment上做出适当的更改。