启动和停止 Greenplum 数据库

之前初次了解安装了Greenplum了,但是由于没有开机自启导致系统重启后服务就没有起来了。
上次因为没有数据靠重新初始化解决的,但是不可能每次都靠初始化来解决能,这个又不是正确的解决方法。

启动和停止 Greenplum 数据库

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

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

使用gpstartgpstop实用程序分别启动和停止 Greenplum 数据库。这些实用程序位于您的 Greenplum 数据库主主机上的 $GPHOME/bin 目录中。

重要提示:不要发出kill命令来结束任何 Postgres 进程。而是使用数据库命令pg_cancel_backend()

发出kill -9orkill -11可能会导致数据库损坏并阻止执行根本原因分析。

有关gpstart和的信息gpstop,请参阅Greenplum 数据库实用程序指南。

启动 Greenplum 数据库

启动初始化的 Greenplum 数据库系统
在master主机上运行gpstart启动Greenplum数据库:

gpstart

重启Greenplum数据库

停止 Greenplum 数据库系统,然后重新启动它。
要重新启动 Greenplum 数据库,请在主控主机上输入以下命令:

gpstop -r

仅重新加载配置文件更改

在不中断系统的情况下重新加载对 Greenplum 数据库配置文件的更改。
使用该实用程序在不关闭 Greenplum 数据库系统的情况下重新加载配置文件更改:

gpstop -u

在维护模式下启动 Master

仅启动主节点以执行维护或管理任务,而不影响段上的数据。
维护模式只能在 VMware 技术支持的指导下使用。例如,您可以仅在维护模式下连接到主实例上的数据库并编辑系统目录设置。有关系统目录表的更多信息,请参阅Greenplum 数据库参考指南。
1. gpstart使用 -m 选项运行:

gpstart -m

2. 在维护模式下连接到 master 以进行目录维护。例如:

PGOPTIONS='-c gp_role=utility' psql postgres

3. 完成管理任务后,将主节点停止在维护模式。然后,以生产模式重新启动它。

gpstop -m
gpstart

警告:不正确使用维护模式连接会导致系统状态不一致。只有技术支持才能执行此操作。

停止 Greenplum 数据库

gpstop实用程序停止或重新启动您的 Greenplum 数据库系统并始终在主控主机上运行。激活后,gpstop停止postgres系统中的所有进程,包括主实例和所有段实例。该gpstop实用程序默认使用最多 64 个并行工作线程来关闭构成 Greenplum 数据库集群的 Postgres 实例。系统在关闭之前等待任何活动事务完成。如果两分钟后仍有活动连接,gpstop将提示您继续在智能模式下等待、在快速模式下停止或在即时模式下停止。要立即停止 Greenplum 数据库,请使用快速模式。

重要提示:不建议立即关闭模式。此模式停止所有数据库进程,不允许数据库服务器完成事务处理或清理任何临时或进程中的工作文件。

1. 停止 Greenplum 数据库:

gpstop

2. 以快速模式停止 Greenplum 数据库:

gpstop -M fast

默认情况下,如果有任何客户端连接到数据库,则不允许关闭 Greenplum 数据库。使用该-M fast选项回滚所有正在进行的事务并在关闭之前终止任何连接。

停止客户端进程

Greenplum 数据库为每个客户端连接启动一个新的后端进程。具有SUPERUSER特权的 Greenplum 数据库用户可以取消和终止这些客户端后端进程。

您可以从视图的pid列中获取进程 ID ,pg_stat_activity例如,要查看与所有正在运行和排队的查询相关的进程信息:

=# 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

使用输出来识别pid查询或客户端连接的进程 ID ()。

例如,要取消上面示例输出中标识的等待查询并’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."

参考

启动和停止 Greenplum 数据库
https://www.jianshu.com/p/6c6aaef5c323

ChiuYut

2022年11月13日

发布者

ChiuYut

咦?我是谁?这是什么地方? Ya ha!我是ChiuYut!这里是我的小破站!