答复: [ClusterLabs] 答复: Postgres PAF setup

From: 范国腾 <fanguoteng(at)highgo(dot)com>
To: Adrien Nayrat <adrien(dot)nayrat(at)anayrat(dot)info>, "Cluster Labs - All topics related to open-source clustering welcomed" <users(at)clusterlabs(dot)org>, "Andrew Edenburn" <andrew(dot)edenburn(at)gm(dot)com>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: 答复: [ClusterLabs] 答复: Postgres PAF setup
Date: 2018-04-25 07:45:55
Message-ID: cc7208c7ae80408db54bd3ea9695be0c@EX01.highgo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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(dot)nayrat(at)anayrat(dot)info]
发送时间: 2018年4月25日 15:29
收件人: Cluster Labs - All topics related to open-source clustering welcomed <users(at)clusterlabs(dot)org>; 范国腾 <fanguoteng(at)highgo(dot)com>; Andrew Edenburn <andrew(dot)edenburn(at)gm(dot)com>; pgsql-general(at)postgresql(dot)org
主题: 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

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Jehan-Guillaume de Rorthais 2018-04-25 08:32:32 Re: [ClusterLabs] 答复: 答复: Postgres PAF setup
Previous Message Adrien Nayrat 2018-04-25 07:29:22 Re: [ClusterLabs] 答复: Postgres PAF setup