On Thu, Apr 28, 2016 at 09:58:00PM +0000, Alex Ignatov wrote:
> Hello everyone!
> We have some issue with truncated pg_control file on Windows after power
> failure.
> My questions is :
> 1) Is pg_control protected from say , power crash or partial write?
> 2) How PG update pg_control? By writing in it or writing in some temp file and
> after that rename it to pg_control to be atomic?
We write pg_controldata in one write() OS call:
if (write(fd, buffer, PG_CONTROL_SIZE) != PG_CONTROL_SIZE)
> 3) Can PG have multiple pg_control copy to be more fault tolerant?
>
> PS During some experiments we found that at present time there is no any method
> to do crash recovery with "restored" version of pg_control (based on some
> manipulations with pg_resetxlog ).
> Only by using pg_resetxlog and setting it parameters to values taken from wal
> file (pg_xlogdump)we can at least start PG and saw that PG state is at the
> moment of last check point. But we have no real confidence that PG is in
> consistent state(also docs on pg_resetxlogs told us about it too)
We have talked about improving the reliability of pg_control, but
failures are so rare we have never done anything to improve it. I know
Tatsuo has talked about making pg_control more reliable, so I am CC'ing
him.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +