Robert Haas wrote:
> On Wed, Mar 23, 2011 at 1:48 AM, Fujii Masao <[email protected]> wrote:
> > On Sat, Mar 19, 2011 at 10:20 AM, Robert Haas <[email protected]> wrote:
> >> On Fri, Mar 18, 2011 at 1:19 PM, Erik Rijkers <[email protected]> wrote:
> >>> This is OK and expected. ?But then it continues (in the logfile) with:
> >>>
> >>> FATAL: ?lock file "postmaster.pid" already exists
> >>> HINT: ?Is another postmaster (PID 20519) running in data directory
> >>> "/var/data1/pg_stuff/pg_installations/pgsql.vanilla_1/data"?
> >>>
> >>> So, complaints about the *other* instance. ?It doesn't happen once a
> >>> successful start (with pg_ctl
> >>> start) has happened.
> >>
> >> I'm guessing that leftover postmaster.pid contents might be
> >> responsible for this?
> >
> > The cause is that "pg_ctl restart" uses the postmaster.opts which was
> > created in the primary. Since its content was something like
> > "pg_ctl -D vanilla_1/data", vanilla_1/data/postmaster.pid was checked
> > wrongly.
> >
> > The simple workaround is to exclude postmaster.opts from the backup
> > as well as postmaster.pid. But when postmaster.opts doesn't exist,
> > "pg_ctl restart" cannot start up the server. We might also need to change
> > the code of "pg_ctl restart" so that it does just "pg_ctl start" when
> > postmaster.opts doesn't exist.
>
> Sounds reasonable.
I looked over this issue and I don't thinking having pg_ctl restart fall
back to 'start' is a good solution. I am concerned about cases where we
start a different server without shutting down the old server, for some
reason. When they say 'restart', I think we have to assume they want a
restart.
What I did do was to document that not backing up postmaster.pid and
postmaster.opts might help prevent pg_ctl from getting confused.
Patch applied and backpatched to 9.1.X.
--
Bruce Momjian <[email protected]> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ It's impossible for everything to be true. +
diff --git a/doc/src/sgml/backup.sgml b/doc/src/sgml/backup.sgml
new file mode 100644
index b8daedc..737355a
*** a/doc/src/sgml/backup.sgml
--- b/doc/src/sgml/backup.sgml
*************** SELECT pg_stop_backup();
*** 869,875 ****
of mistakes when restoring. This is easy to arrange if
<filename>pg_xlog/</> is a symbolic link pointing to someplace outside
the cluster directory, which is a common setup anyway for performance
! reasons.
</para>
<para>
--- 869,879 ----
of mistakes when restoring. This is easy to arrange if
<filename>pg_xlog/</> is a symbolic link pointing to someplace outside
the cluster directory, which is a common setup anyway for performance
! reasons. You might also want to exclude <filename>postmaster.pid</>
! and <filename>postmaster.opts</>, which record information
! about the running <application>postmaster</>, not about the
! <application>postmaster</> which will eventually use this backup.
! (These files can confuse <application>pg_ctl</>.)
</para>
<para>
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers