Pivotal Greenplum® 6.9-管理员指南-管理系统-启动和停止Greenplum数据库

启动和停止Greenplum数据库

在Greenplum数据库DBMS中,所有主机上的数据库实例(master和所有segment)一起启动或停止,它们一起工作,成为一个统一的DBMS。

由于Greenplum数据库系统分布在许多机器上,因此启动和停止Greenplum数据库系统的过程,与启动和停止常规PostgreSQL DBMS的过程不同。

使用 gpstart 和 gpstop工具,分别启动和停止Greenplum数据库。这些工具位于Greenplum数据库master主机上的$GPHOME/bin目录

重要提示:请勿采用kill命令直接杀掉任何Postgres进程。相反,请使用数据库命令pg_cancel_backend()。

采用 kill -9 或 kill -11可能会导致数据库损坏,并妨碍根因分析。

有关 gpstart 和 gpstop的更多信息,请参阅《 Greenplum数据库工具指南》。

父主题: 管理Greenplum系统
 

启动Greenplum数据库

通过在Master实例上执行gpstart工具,可以启动一个已初始化的Greenplum数据库系统。

使用gpstart工具启动greenplum数据库系统,该系统已由gpinitsystem工具初始化,但已被gpstop工具停止。 gpstart 通过启动Greenplum数据库集群中的所有Postgres数据库实例来启动Greenplum数据库。 gpstart 会精心安排这一过程并且以并行的方式执行它。

在Master主机上运行gpstart以启动一个Greenplum数据库:

gpstart

重新启动Greenplum数据库

停止Greenplum数据库系统,然后重新启动它。

执行gpstop工具并带有-r选项时,会停止Greenplum数据库并在其完全关闭后重新启动它。
 
要重启Greenplum数据库,在Master主机上输入下面的命令:
gpstop -r

仅重新载入配置文件的更改

重新载入对Greenplum数据库配置文件的更改,无需中断系统。

gpstop 工具可以在不中断服务的前提下,重新加载对pg_hba.conf配置文件和Master上的postgresql.conf、 pg_hba.conf文件中的运行时参数进行更改。 活动会话将会在它们重新连接到数据库时使用这些更新。 很多服务器配置参数需要完全重启系统(gpstop -r)才能激活。有关服务器配置参数的信息请见 《Greenplum 数据库参考指南》。

使用gpstop工具重新载入配置文件更改而不关闭系统:

gpstop -u

以维护模式启动Master

仅启动Master以执行维护或管理任务,而不会影响Segment的数据。

维护模式应在Pivotal技术支持的指导下使用。例如,您可以用维护模式连接到只在master上的数据库,然后编辑系统目录设置。有关系统目录表的更多信息,请参阅《Greenplum数据库参考指南》。
  1. 使用-m 选项运行gpstart
    gpstart
  2. 以维护模式连接到Master来执行目录维护。例如:
    $ PGOPTIONS='-c gp_session_role=utility' psql postgres
  3. 完成管理任务后,将主服务器停止在实用程序模式下。然后,以生产模式重新启动它。
    gpstop -mr

    警告:

    维护模式连接的使用不当会导致不一致的系统状态。只有技术支持人员才能执行此操作。

停止Greenplum数据库

gpstop工具可以停止或者重启Greenplum数据库系统,它总是运行在Master主机上。 启用后,gpstop 会停止系统中所有的postgrespostgres进程,包括Master和所有的Segment实例。 gpstop工具默认使用最多64个并行工作线程,来关闭构成 组成Greenplum数据库集群的Postgres实例。 系统在关闭之前会等待所有的活动事务完成。要立即停止Greenplum数据库, 使用快速模式。
  • 要停止Greenplum数据库:
    $ gpstop
  • 要以快速模式停止Greenplum数据库:
    $ gpstop -M fast
    默认情况下,如果有任何客户端连接到数据库,就不允许您关闭Greenplum数据库。使用-M fast  选项,可以在关闭前 回滚所有正在进行的事务并中断 所有连接。

停止客户端进程

Greenplum数据库会为每一个客户端连接唤起一个后台进程。具有SUPERUSER权限的Greenplum用户可以取消或直接终止这些客户端后台进程。

使用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数据库直接截断。

如果pg_cancel_backend()和pg_terminate_backend()函数执行成功,会返回状态true, 否则会返回false。

要取消或中断后台进程,必须先识别出的后台进程ID。进程ID可以从pg_stat_activity视图的procpid列得到。 例如,如果要看所有运行中和等待中查询的进程信息,可以执行:

=# SELECT usename, pid, waiting, state, query, datname
     FROM pg_stat_activity;

部分查询结果示例如下:

 usename |  pid     | waiting | state  |         query          | datname
---------+----------+---------+--------+------------------------+---------
  sammy  |   31861  |    f    | idle   | SELECT * FROM testtbl; | testdb
  billy  |   31905  |    t    | active | SELECT * FROM topten;  | testdb

从查询结果中找到对应查询或客户端连接的进程ID(procpid)。

例如,下面语句会取消上面输出中的等待查询,并将"Admin canceled long-running query."信息反馈给客户端。

=# SELECT pg_cancel_backend(31905 ,'Admin canceled long-running query.');
ERROR:  canceling statement due to user request: "Admin canceled long-running query."
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值