Adrien, Is there any way to make the cluster recover if the postgres was not properly stopped, such as the lab power off or the OS reboot? Thanks -----邮件原件----- 发件人: Adrien Nayrat [mailto:adrien.nayrat@xxxxxxxxxxxx] 发送时间: 2018年4月25日 15:29 收件人: Cluster Labs - All topics related to open-source clustering welcomed <users@xxxxxxxxxxxxxxx>; 范国腾 <fanguoteng@xxxxxxxxxx>; Andrew Edenburn <andrew.edenburn@xxxxxx>; pgsql-general@xxxxxxxxxxxxxx 主题: Re: [ClusterLabs] 答复: Postgres PAF setup On 04/25/2018 02:31 AM, 范国腾 wrote: > I have meet the similar issue when the postgres is not stopped normally. > > You could run pg_controldata to check if your postgres status is shutdown/shutdown in recovery. > > I change the /usr/lib/ocf/resource.d/heartbeat/pgsqlms to avoid this problem: > > elsif ( $pgisready_rc == 2 ) { > # The instance is not listening. > # We check the process status using pg_ctl status and check # if it > was propertly shut down using pg_controldata. > ocf_log( 'debug', 'pgsql_monitor: instance "%s" is not listening', > $OCF_RESOURCE_INSTANCE ); > # return _confirm_stopped(); # remove this line > return $OCF_NOT_RUNNING; > } Hello, It is a bad idea. The goal of _confirm_stopped is to check if the instance was properly stopped. If it wasn't you could corrupt your instance. _confirm_stopped return $OCF_NOT_RUNNING only if the instance was properly shutdown : elsif ( $controldata_rc == $OCF_NOT_RUNNING ) { # The controldata state is consistent, the instance was probably # propertly shut down. ocf_log( 'debug', '_confirm_stopped: instance "%s" controldata indicates that the instance was propertly shut down', $OCF_RESOURCE_INSTANCE ); return $OCF_NOT_RUNNING; } Regards, -- Adrien NAYRAT