天天看点

greenplum启动、停止、重启、节点修复指南gpstartgpstopgpstategprecoverseg

最常使用gp指令:gpstart启动数据库、gpstop停止数据库、gprecoverseg修复节点

#快速重启数据库,先停库再启动速度较快
gpstop -M fast
gpstart

#直接重启,速度较慢
gpstop -r

#修复节点
gprecoverseg
#平衡修复好的节点
gprecoverseg -r
           

有极端情况数据库无法停止的时候,需要手动杀进程才能完成停库(非极端情况不要使用)

详细可以查阅greenplum官方文档:

http://docs-cn.greenplum.org/v6/utility_guide/admin_utilities/gpstart.html

gpstart

启动一个Greenplum数据库系统。

概要

gpstart [-d master_data_directory] [-B parallel_processes] [-R]
                [-m] [-y] [-a] [-t timeout_seconds] [-l logfile_directory] 
                [--skip-heap-checksum-validation]
                [-v | -q]
                
                gpstart -? | -h | --help 
                
                gpstart --version
           

描述

gpstart工具用于启动Greenplum数据库服务器进程。当用户启动一个Greenplum 数据库系统时,用户实际上是同时启动了几个postgres数据库服务器监听器进程 (Master和所有的Segment实例)。gpstart工具处理各个实例的启动。每个实例 都是并行启动的。

管理员第一次运行gpstart时,该工具将在用户的主目录中创建一个名为 .gphostcache的主缓存文件。随后,该工具使用此主机列表更有效地启动系统。 如果将新主机添加到系统中,则必须手动从gpadmin用户的主目录中删除此文件。 该工具将在下次启动时创建一个新的主机缓存文件。

作为启动过程的一部分,该工具会检查堆表checksum设置是否在集群上启用。如果堆表checksum启用情况 在各个实例之间不同,Greenplum数据库不会启动,会返回一个错误信息。该验证选项可以通过指定选项 --skip-heap-checksum-validation来停用。更多关于堆表checksum的情况, 请见Greenplum数据库管理员指南中的启用高可用和数据一致性特性部分。

Note: 在启动Greenplum数据库系统之前,用户必须首先使用gpinitsystem初始化系统。 堆表checksum特性在系统初始化时配置启用和禁用,系统初始化后不能修改。

选项

  • -a

    不要提示用户确认。

  • -B parallel_processes

    并行启动的Segment数。如果未指定,则该工具将启动最多64个并行进程,具体取决于需要启动 多少个Segment实例。

  • -d master_data_directory

    可选。Master主机的数据目录。如果未指定,则使用为$MASTER_DATA_DIRECTORY 设置的值。

  • -l logfile_directory

    写入日志文件的目录。默认为~/gpAdminLogs。

  • -m

    可选。仅启动Master实例,这可能对维护任务有用。该模式只允许连接到utility 模式下的Master。例如:

    PGOPTIONS='-c gp_session_role=utility' psql

    此模式下不检查Master和Segment实例的堆表checksum设置一致性。
  • -q

    以静默模式运行。命令输出不显示在屏幕上,但仍然写入日志文件。

  • -R

    以受限模式启动Greenplum数据库(只允许数据库超级用户连接)。

  • –skip-heap-checksum-validation

    启动时指定该选项,该工具不检查Master和Segment之间的堆表checksum一致性。 默认情况下该设置在所有实例上是一样的,或者启用或者禁用。Warning: 不进行该项验证启动Greenplum数据库会导致数据丢失。 只有在必须要忽略堆表checksum验证错误以恢复数据或进行错误调试时,才能 使用该选项。

  • -t timeout_seconds

    指定等待Segment实例启动的超时时间(秒)。如果某个Segment实例异常关闭 (例如由于电源故障或终止其postgres数据库监听器进程), 由于数据库恢复和验证过程,启动可能需要较长的时间。如果未指定,则默认超时 时间为60秒。

  • -v

    显示工具输出的详细状态,进度和错误消息。

  • -y

    可选。不启动后备Master主机。默认是启动后备Master主机和同步过程。

  • -? | -h | --help

    显示在线帮助。

  • –version

    显示工具的版本。

示例

启动Greenplum数据库系统:

gpstart
           

以受限模式启动Greenplum数据库系统(仅允许超级用户连接):

仅启动Greenplum主实例并以utility模式连接:

gpstart -m PGOPTIONS='-c gp_session_role=utility' psql
           

gpstop

停止或者重启Greenplum数据库系统。

概要

gpstop [-d master_data_directory] [-B parallel_processes] 
                [-M smart | fast | immediate] [-t timeout_seconds] [-r] [-y] [-a] 
                [-l logfile_directory] [-v | -q]
                
                gpstop -m [-d master_data_directory] [-y] [-l logfile_directory] [-v | -q]
                
                gpstop -u [-d master_data_directory] [-l logfile_directory] [-v | -q]
                
                gpstop --host host_name [-d master_data_directory] [-l logfile_directory]
                [-t timeout_seconds] [-a] [-v | -q]
                
                gpstop --version 
                
                gpstop -? | -h | --help
           

描述

gpstop工具用于停止构成Greenplum数据库系统的数据库服务器。当用户停止一个 Greenplum数据库系统时,用户实际上是一次停止几个postgres数据库服务器进程 (Master和所有的Segment实例)。gpstop工具处理个别实例的关闭。每个实例 被并行地关闭。

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

使用-u选项时, 该工具会上传对主pg_hba.conf文件所做的更改, 或者在postgresql.conf文件中将运行时配置参数上载到服务中。请注意, 任何活动的会话在重新连接到数据库之前都不会获取更改。

选项

  • -a

    不要提示用户确认。

  • -B parallel_processes

    并行停止的Segment数。如果未指定,则工具将启动最多64个并行进程,具体取决于需要停止 多少个Segment实例。

  • -d master_data_directory

    可选。Master主机的数据目录。如果未指定,则使用为$MASTER_DATA_DIRECTORY 设置的值。

  • –host host_name

    The utility shuts down the Greenplum Database segment instances on the specified host to allow maintenance on the host. Each primary segment instance on the host is shut down and the associated mirror segment instance is promoted to a primary segment if the mirror segment is on another host. Mirror segment instances on the host are shut down.

    The segment instances are not shut down and the utility returns an error in these cases:Segment mirroring is not enabled for the system.The master or standby master is on the host.Both a primary segment instance and its mirror are on the host.

    This option cannot be specified with the -m, -r, -u, or -y options.Note: The gprecoverseg utility restores segment instances. Run gprecoverseg commands to start the segments as mirrors and then to return the segments to their preferred role (primary segments).

  • -l logfile_directory

    写入日志文件的目录。默认为~/gpAdminLogs。

  • -m

    可选。关闭在维护模式下启动的Greenplum主实例。

  • -M fast

    快速关闭。任何正在进行的事务都会中断并回滚。

  • -M immediate

    立即关闭。任何正在进行的事务都会中止。

    该模式杀死所有postgres进程,而不允许数据库服务器完成事务处理 或清理任何临时或进程内工作文件。

  • -M smart

    智能关闭。如果存在活动连接,则此命令将失败并显示警告。这是默认的关闭模式。

  • -q

    以静默模式运行。命令输出不显示在屏幕上,但仍然写入日志文件。

  • -r

    关机完成后重新启动。

  • -t timeout_seconds

    指定等待Segment实例关闭的超时阈值(以秒为单位)。如果Segment实例没有在指定的秒数内关闭, gpstop将显示一条消息,指示一个或多个Segment仍处于关闭过程中,并且 直到Segment实例停止后才能重新启动Greenplum数据库。这个选项在gpstop 被执行且有非常大的事务需要回滚的情况下非常有用。这些大型事务可能需要一分钟才能回滚,并超过 600秒的默认超时时间。

  • -u

    此选项将重新加载Master和Segment的pg_hba.conf文件以及 postgresql.conf文件的运行时参数,但不会关闭数据库阵列。 编辑postgresql.conf或pg_hba.conf 之后,使用此选项可使新的配置设置处于活动状态。请注意,这仅适用于设计为运行时 的配置参数。

  • -v

    显示工具输出的详细状态,进度和错误消息。

  • -y

    不要停止后备Master进程。默认是停止后备Master。

  • -? | -h | --help

    显示在线帮助。

  • –version

    显示工具的版本。

示例

在智能模式下关闭Greenplum数据库系统:

gpstop
           

在快速模式下关闭Greenplum数据库系统:

gpstop -M fast
           

停止所有的Segment实例,然后重新启动系统:

gpstop -r
           

停止在维护模式下启动的Master实例:

gpstop -m
           

在进行配置更改后重新加载postgresql.conf和pg_hba.conf 文件,但不要关闭Greenplum数据库阵列:

gpstop -u
           

gpstate

显示正在运行的Greenplum数据库系统的状态。

概要

gpstate [-d master_data_directory] [-B parallel_processes] 
          [-s | -b | -Q | -e] [-m | -c] [-p] [-i] [-f] [-v | -q] | -x 
          [-l log_directory]

gpstate -? | -h | --help
           

描述

gpstate工具显示有关正在运行的Greenplum数据库实例的信息。 由于Greenplum数据库系统由跨多台机器的多个PostgreSQL数据库实例(Segment)组成, 因此用户可能需要了解关于Greenplum数据库系统的额外信息。gpstate 工具为Greenplum数据库系统提供了额外的状态信息,例如:

  • 哪台Segment主机已被关闭?
  • Master和Segment配置信息(主机、数据目录等)。
  • 系统使用的端口。
  • 主Segment到其相应的镜像Segment的映射。

选项

  • -b(简要状态)

    可选。显示Greenplum数据库系统状态的简要概述。这是默认选项。

  • -B parallel_processes

    并行检查的Segment数。如果未指定,则工具将根据需要检查多少个Segment实例启动最多60个并行进程。

  • -c(显示主Segment到镜像Segment的映射)

    可选。显示主Segment到镜像Segment的映射。

  • -d master_data_directory

    可选。Master的数据目录。如果未指定,则使用为$MASTER_DATA_DIRECTORY 设置的值。

  • -e(显示镜像状态出问题的Segment)

    显示具有潜在问题的主要/镜像Master对的详细信息,例如1)活动Segment正在Change Tracking模式下运行, 表示Segment处于关闭状态;2)活动Segment处于重新同步模式,这意味着它正在赶上对镜像的更改;3) 一个Segment不是它的首选角色,例如在系统初始化时作为一个主Segment的现在作为一个镜像Segment, 这意味着用户可能有一台或多台Segment主机的处理负载不平衡。

  • -f(显示后备Master的详情)

    显示后备Master主机的详细信息(如果配置)。

  • -i(显示Greenplum数据库的版本)

    显示每个实例的Greenplum数据库软件版本信息。

  • -l logfile_directory

    写入日志文件的目录。默认为~/gpAdminLogs。

  • -m(列出镜像)

    可选。列出系统中的镜像Segment实例及其当前角色和同步状态。

  • -p(显示端口)

    列出整个Greenplum数据库系统使用的端口号。

  • -q(没有屏幕输出)

    可选。以静默模式运行。除了警告信息之外,屏幕上不显示命令输出。但是, 这些信息仍然写入到日志文件中。

  • -Q(快速状态)

    可选。在Master主机上的系统目录中检查Segment的状态。不直接向Segment征询状态。

  • -s(详细状态)

    可选。显示Greenplum数据库系统的详细状态信息.

  • -v(详细输出)

    可选。显示错误消息并输出详细的状态和进度信息。

  • -x (expand)

    Optional. Displays detailed information about the progress and state of a Greenplum system expansion.

  • -? | -h | --help (help)

    显示在线帮助。

输出字段定义

以下输出字段由主机的gpstate -s报告:

输出数据 描述
Master host Master的主机名
Master postgres process ID 主数据库侦听进程的PID
Master data directory 主数据目录的文件系统位置
Master port Master上postgres数据库监听器进程的端口
Master current role dispatch = 常规操作模式utility = 维护模式
Greenplum array configuration type Standard = 每台主机一个NICMulti-Home = 每台主机多个NIC
Greenplum initsystem version 系统第一次初始化时的Greenplum数据库版本
Greenplum current version Greenplum数据库当前的版本
Postgres version Greenplum数据库基于的PostgreSQL版本
Greenplum mirroring status 物理镜像或无镜像
Master standby 后备Master的主机名
Standby master state 后备Master的状态:活跃或被动

以下输出字段由gpstate -s为每个Segment报告:

输出数据 描述
Hostname 系统配置的主机名
Address 网络地址主机名(NIC名称)
Datadir Segment数据目录的文件系统位置
Port Segment的postgres数据库监听器进程的端口号
Current Role Segment的当前角色:Mirror或 Primary
Preferred Role 系统初始化时的角色:Mirror或 Primary
Mirror Status 主/镜像Segment对的状态:Synchronized = 两者上的数据都是最新Resynchronization = 数据当前正被从一个拷贝到另一个Change Tracking = Segment停止并且活动Segment正在记录更改
Change tracking data size 当处于Change Tracking模式中时, 更改日志文件的尺寸(如果应用压缩,尺寸可能增长或者收缩)
Estimated total data to synchronize 当处于Resynchronization模式中时, 剩下要同步的数据的估计尺寸
Data synchronized 当处于Resynchronization模式中时, 已经被同步的数据的估计尺寸
Estimated resync progress with mirror 当处于Resynchronization模式中时, 完成百分比的估计值
Estimated resync end time 当处于Resynchronization模式中时, 完成时间的估计
File postmaster.pid postmaster.pid锁文件的状态: Found或Missing
PID from postmaster.pid file postmaster.pid文件中找到的PID
Lock files in /tmp 为Segment的postgres会在 /tmp中创建Segment端口锁文件(当Segment关闭时会移除该文件)
Active PID Segment的活动进程ID
Master reports status as 系统目录中报告的Segment状态: Up或Down
Database status Greenplum数据库对进入请求的状态: Up、Down或Suspended。 Suspended状态意味着当Segment正从一种状态转移到另一种状态时, 数据库活动被临时暂停。

以下输出字段由gpstate -f为每个后备Master复制状态报告:

输出数据 描述
Standby address 后备Master的主机名
Standby data dir 后备Master的数据目录的文件系统位置
Standby port 后备Master的postgres数据库监听器进程的端口
Standby PID 后备Master的进程ID
Standby status 后备Master的状态:Standby host passive
WAL Sender State 预写式日志(WAL)流状态: streaming、 startup、backup、catchup
Sync state WAL发送者同步状态:sync
Sent Location WAL发送者事务日志(xlog)记录发送位置
Flush Location WAL接收者xlog记录刷入位置
Replay Location 后备上xlog记录重放位置

示例

显示Greenplum数据库系统的详细信息:

gpstate -s
           

在Master主机系统目录中快速检查下游Segment:

gpstate -Q
           

显示关于镜像Segment实例的信息:

gpstate -m
           

显示关于后备Master配置的信息:

gpstate -f
           

显示Greenplum软件版本信息:

gpstate -i
           

gprecoverseg

恢复已标记为down的主Segment实例或镜像Segment实例(如果启用了镜像)。

概要

gprecoverseg [-p new_recover_host[,...]] | -i recover_config_file] [-d master_data_directory] 
        [-B parallel_processes] [-F [-s]] [-a] [-q] 
        [--no-progress] [-l logfile_directory]
        
        gprecoverseg -r 
        
        gprecoverseg -o output_recover_config_file 
                     [-p new_recover_host[,...]]
        
        gprecoverseg -? | --help
        
        gprecoverseg --version
           

描述

在启用了镜像的系统中,gprecoverseg工具会重新激活故障的Segment实例, 并识别需要重新同步的已更改的数据库文件。一旦gprecoverseg完成这个过程, 系统进入resyncronizing模式,直到被恢复的Segment更新为最新为止。在重新同步期间 系统处于在线状态并且能被正常操作。

在增量恢复期间(未指定-F选项),如果gprecoverseg 在启用了镜像的系统中检测到禁用镜像的Segment实例,则工具将报告该Segment禁用了镜像,不会尝 试恢复该Segment实例,并继续恢复过程。

Segment实例可能由于多种原因故障,如主机故障、网络故障或磁盘故障。当一个Segment实例故障时, 其状态在Greenplum数据库系统目录中被标记为down并且在change tracking模式 下激活其镜像。为了使发生故障的Segment实例重新运行,首先必须纠正使其故障的问题,然后使用 gprecoverseg在Greenplum数据库中恢复Segment实例。

使用gprecoverseg进行Segment恢复需要有一个活动镜像来从其中恢复。对于 没有启用镜像的系统,或者在发生双重故障的情况下(主Segment和镜像Segment同时故障),必须采取 手动步骤恢复出现故障的Segment实例,然后执行系统重新启动让Segment重新联机。例如,该命令重新 启动系统。

gpstop -r
           

缺省情况下,将恢复出现故障的Segment,这意味着系统将该Segment重新联机到与最初配置的主机和 数据目录位置相同的位置。在这种情况下,请使用以下格式的恢复配置文件(使用-i)。

<failed_host_address>:<port>:<data_directory> 
           

在某些情况下,这可能是不可能的(例如,如果主机物理损坏,无法恢复)。gprecoverseg 允许用户将失败的Segment恢复成全新的主机(使用-p),在剩余的活动Segment主机上的 备用数据目录位置(使用-s)或通过以下面的格式提供恢复配置文件(使用-i)。 SPACE关键字表示所需空间的位置。不要添加额外的空间。

<failed_host_address>:<port>:<data_directory>SPACE
        <recovery_host_address>:<port>:<data_directory>
      
           

有关恢复配置文件的详细信息和示例,请参阅下面的-i选项。

gp_segment_configuration系统目录表可以帮助用户确定当前的Segment配置, 以便用户可以规划镜像恢复配置。例如,运行以下查询:

=# SELECT dbid, content, address, port, datadir 
           FROM gp_segment_configuration
           ORDER BY dbid;
           

新恢复的Segment主机必须预先安装Greenplum数据库软件,并且配置与现有Segment主机完全相同。所有 当前配置的Segment主机上必须存在备用数据目录位置,并且有足够的磁盘空间来容纳故障的Segment。

恢复过程会在Greenplum数据库系统目录中再次标记该Segment,然后启动重新同步过程,以使Segment的 事务状态处于最新状态。在重新同步期间系统在线并且可用。要检查重新同步进程运行的状态:

gpstate -m
           

选项

  • -a(不提示)

    不要提示用户确认。

  • -B parallel_processes

    并行恢复的Segment数。如果未指定,则实用程序将启动最多16个并行进程,具体取决于需要恢复 多少个Segment实例。

  • -d master_data_directory

    可选。Master主机的数据目录。如果未指定,则使用为$MASTER_DATA_DIRECTORY 设置的值。

  • -F(完全恢复)

    可选。执行活动Segment实例的完整副本以恢复出现故障的Segment。 默认情况下,仅复制Segment关闭 时发生的增量更改。Warning: 全量恢复会在从活动(当前主)Segment实例复制数据目录到故障Segment之前将 故障Segment的数据目录清空。在执行全量恢复前,确保Segment故障不会引起数据损坏,并且任何Segment 磁盘故障问题均被修复。

    全量恢复会持续很长时间,所以gprecoverseg会显示每个Segment的运行处理过程。 每个Segment的处理过程每秒更新一次,采用ANSI逃逸符更新每一个Segment行,如果您将gprecoverseg 工具执行日志输出到文件或您的终端不支持ANSI逃逸符,可以采用-s选项停用ANSI逃逸符。 该操作会使每个Segment每秒输出一个新行。带有–no-progress时会禁用处理报告。

  • -i recover_config_file

    指定文件的名称以及有关故障Segment要恢复的详细信息。文件中的每一行都是以下格式。SPACE 关键字表示所需空间的位置。不要添加额外的空间。

    <failed_host_address>:<port>:<data_directory>**SPACE** <recovery_host_address>:<port>:<data_directory>

    注释以#开始的行被视为注释并被忽略。要恢复的Segments第一行之后的每一行指定要恢复的Segment。这一行可以有两种格式之一。在就地恢复的情况下, 在该行中输入一组冒号分隔的字段。例如:

    failedAddress:failedPort:failedDataDirectory

    要恢复到新位置,请在行中输入由空格分隔的两组字段。SPACE表示不要添加额外的空间。

    failedAddress:failedPort:failedDataDirectory**SPACE**newAddress: newPort:newDataDirectory

    示例****单个镜像的就地恢复

    sdw1-1:50001:/data1/mirror/gpseg16

    将单个镜像恢复到新主机

    sdw1-1:50001:/data1/mirror/gpseg16**SPACE**sdw4-1:50001:/data1/recover1/gpseg16

    获取示例文件用户可以使用-o选项输出一个恢复配置文件的样例以便从它开始。
  • -l logfile_directory

    写入日志文件的目录。默认为~/gpAdminLogs。

  • -o output_recover_config_file

    指定文件名称和位置以输出示例恢复配置文件。输出文件以-i选项所需的格式列出当前故障 的Segment及其默认恢复位置。 与-p选项一起使用可输出用于在不同主机上恢复的示例文件。 如果需要,可以编辑此文件以提供备用恢复位置。

  • -p new_recover_host[,…]

    在当前配置的Greenplum数据库阵列之外指定一个备用主机,用于恢复故障的Segment。在多个故障的Segment 主机的情况下,用户可以指定一个逗号分隔的列表。备用主机必须安装和配置Greenplum数据库软件,并具有与当前 网段主机相同的硬件和操作系统配置(相同的OS版本、语言环境、gpadmin用户帐户、创建的 数据目录位置、交换的ssh密钥、网络接口数量、网络接口命名约定等)。

  • -q(无屏幕输出)

    以静默模式运行。命令输出不显示在屏幕上,但仍然写入日志文件。

  • -r(重新平衡Segment)

    在Segment恢复之后,Segment实例可能并未回到系统初始化时为它给定的优先角色。这可能会让系统陷入一种 潜在的非平衡状态,因为某些Segment主机拥有的活动Segment数量可能超过最高系统性能时的数量。这一选项通过 将主Segment和镜像Segment返回到其优先角色来重新平衡主Segment和镜像Segment。在运行gprecoverseg -r 之前,所有的Segment都必须有效且同步。如果有任何正在进行的查询,它们将被取消并回滚。

  • -s

    展示pg_basebackup顺序处理过程而不是当前情况。此选项在需要写入文件或tty 不支持转义字符时有用。默认是展示当前处理过程。

  • –no-progress

    禁用产生于pg_basebackup的处理过程报告。默认配置为显示基础备份的处理过程。

  • -v(详细模式)

    将日志记录输出设置为verbose。

  • –version(版本)

    显示此工具的版本。

  • -?(帮助)

    显示在线帮助。

示例

恢复所有故障的Segment实例:

$ gprecoverseg
           

恢复后,重新平衡用户的Greenplum数据库系统,将所有Segment重置为其首选角色。 首先检查所有Segment已启动并同步。

$ gpstate -m
        $ gprecoverseg -r
           

将任何故障的Segment实例恢复到新配置的空闲Segment主机:

$ gprecoverseg -i recover_config_file
           

输出默认恢复配置文件:

$ gprecoverseg -o /home/gpadmin/recover_config_file