启动和停止Greenplum数据库
启动和停止Greenplum数据库
在一个Greenplum数据库管理系统中,所有主机上的数据库实例(Master和所有的Segment)一起被启动或者停止,启停操作统一由Master实例发起,它们步调一致,在外界看来是一个完整的数据库管理系统。
由于一个Greenplum数据库系统分布在很多机器上,启动和停止一个Greenplum数据库系统的过程与普通PostgreSQL数据库的启动和停止过程不同。
分别使用gpstart 和 gpstop 工具来启动和停止Greenplum数据库。这些工具位于Greenplum数据库Master主机的 $GPHOME/bin 目录下。
采用 kill -9 或 kill -11 可能引发数据库损坏并且妨碍根据目前数据库的表现进行问题根源分析。
有关gpstart 和 gpstop的详细信息,请参考文档 Greenplum数据库工具指南。
启动Greenplum数据库
在Master实例上,通过执行gpstart可以启动一个初始化好的Greenplum数据库系统。
$ gpstart
重启Greenplum数据库
停止Greenplum数据库系统然后重新启动它。
$ gpstop -r
仅重新载入配置文件更改
重新载入对Greenplum数据库配置文件的更改而不中断系统。
$ gpstop -u
以维护模式启动Master
只启动Master来执行维护或者管理任务而不影响Segment上的数据。
停止Greenplum数据库
停止客户端进程:
Greenplum数据库会为每一个客户端连接唤起一个后台进程。具有SUPERUSER权限的Greenplum用户可以取消或直接终止这些客户端后台进程。
使用pg_cancel_backend()函数可以取消某个活动查询或队列中的后台进程。使用pg_terminate_backend()可以直接终端访问Greenplum数据库的客户端连接。
- pg_cancel_backend( pid int4 )
- pg_cancel_backend( pid int4, msg text )
- 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。
=# SELECT usename, procpid, waiting, current_query, datname FROM pg_stat_activity;
上例语句部分查询结果如下:
usename | procpid | waiting | current_query | datname ---------+----------+---------+-----------------------+--------- sammy | 31861 | f | <IDLE> in transaction | testdb billy | 31905 | t | 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."