Thread: 14.4 If You Are Upgrading - Suggested Improvements

14.4 If You Are Upgrading - Suggested Improvements

From
"Thomas F. O'Connell"
Date:
I've done a number of upgrades of postgres from one minor release to another, and unless I'm missing something, there's nothing anywhere in section 14 that provides documentation on how to do this.

Generally, it's as simple as:

configure
make
make install
pg_ctl stop [or equivalent, if stop scripts exist]
pg_ctl start -D <data directory> [or equivalent, if start scripts exist]

But it seems like it would be helpful for administrators to break down 14.4 into two sections:

14.4.1 - If You Are Upgrading a Minor Release
14.4.2 - If You Are Upgrading a Major Release (or a Release Requiring an initdb)

Just a suggestion. If this strikes others as a good idea, I'd be happy to draft something.

--
Thomas F. O'Connell

optimizing modern web applications
: for search engines, for usability, and for performance :

615-260-0005

Re: 14.4 If You Are Upgrading - Suggested Improvements

From
Neil Conway
Date:
On Sat, 2007-01-20 at 16:48 -0600, Thomas F. O'Connell wrote:
> I've done a number of upgrades of postgres from one minor release to
> another, and unless I'm missing something, there's nothing anywhere in
> section 14 that provides documentation on how to do this.

> Just a suggestion. If this strikes others as a good idea, I'd be happy
> to draft something.

Makes sense to me. Would you mind submitting a patch against the SGML
docs?

-Neil



Re: 14.4 If You Are Upgrading - Suggested Improvements

From
"Thomas F. O'Connell"
Date:
I'll see what I can do... :)

--
Thomas F. O'Connell

optimizing modern web applications
: for search engines, for usability, and for performance :

http://o.ptimized.com/
615-260-0005

On Jan 26, 2007, at 11:42 AM, Neil Conway wrote:

> On Sat, 2007-01-20 at 16:48 -0600, Thomas F. O'Connell wrote:
>> I've done a number of upgrades of postgres from one minor release to
>> another, and unless I'm missing something, there's nothing
>> anywhere in
>> section 14 that provides documentation on how to do this.
>
>> Just a suggestion. If this strikes others as a good idea, I'd be
>> happy
>> to draft something.
>
> Makes sense to me. Would you mind submitting a patch against the SGML
> docs?
>
> -Neil


Re: 14.4 If You Are Upgrading - Suggested Improvements

From
Bruce Momjian
Date:
Neil Conway wrote:
> On Sat, 2007-01-20 at 16:48 -0600, Thomas F. O'Connell wrote:
> > I've done a number of upgrades of postgres from one minor release to
> > another, and unless I'm missing something, there's nothing anywhere in
> > section 14 that provides documentation on how to do this.
>
> > Just a suggestion. If this strikes others as a good idea, I'd be happy
> > to draft something.
>
> Makes sense to me. Would you mind submitting a patch against the SGML
> docs?

I am already working on this and will commit in one hour.

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: 14.4 If You Are Upgrading - Suggested Improvements

From
"Thomas F. O'Connell"
Date:
On Jan 26, 2007, at 4:05 PM, Bruce Momjian wrote:

> Neil Conway wrote:
>> On Sat, 2007-01-20 at 16:48 -0600, Thomas F. O'Connell wrote:
>>> I've done a number of upgrades of postgres from one minor release to
>>> another, and unless I'm missing something, there's nothing
>>> anywhere in
>>> section 14 that provides documentation on how to do this.
>>
>>> Just a suggestion. If this strikes others as a good idea, I'd be
>>> happy
>>> to draft something.
>>
>> Makes sense to me. Would you mind submitting a patch against the SGML
>> docs?
>
> I am already working on this and will commit in one hour.

Great. I'll just wait to see what Bruce does. My job just got
easier... ;)

--
Thomas F. O'Connell

optimizing modern web applications
: for search engines, for usability, and for performance :

http://o.ptimized.com/
615-260-0005



Re: 14.4 If You Are Upgrading - Suggested Improvements

From
Bruce Momjian
Date:
I have updated the installation documentation to clarify major vs. minor
releases;  patch attached and applied.  I always suspected we were
unclear on this.  Comments welcome.  I am not inclined to backpatch this
to 8.2.X because it might be too significant a change.  URL of new text:

    http://momjian.us/main/writings/pgsql/sgml/install-upgrading.html

---------------------------------------------------------------------------

Thomas F. O'Connell wrote:
> I've done a number of upgrades of postgres from one minor release to
> another, and unless I'm missing something, there's nothing anywhere
> in section 14 that provides documentation on how to do this.
>
> Generally, it's as simple as:
>
> configure
> make
> make install
> pg_ctl stop [or equivalent, if stop scripts exist]
> pg_ctl start -D <data directory> [or equivalent, if start scripts exist]
>
> But it seems like it would be helpful for administrators to break
> down 14.4 into two sections:
>
> 14.4.1 - If You Are Upgrading a Minor Release
> 14.4.2 - If You Are Upgrading a Major Release (or a Release Requiring
> an initdb)
>
> Just a suggestion. If this strikes others as a good idea, I'd be
> happy to draft something.
>
> --
> Thomas F. O'Connell
>
> optimizing modern web applications
> : for search engines, for usability, and for performance :
>
> http://o.ptimized.com/
> 615-260-0005
>

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/installation.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v
retrieving revision 1.275
diff -c -c -r1.275 installation.sgml
*** doc/src/sgml/installation.sgml    25 Jan 2007 23:34:28 -0000    1.275
--- doc/src/sgml/installation.sgml    26 Jan 2007 22:51:23 -0000
***************
*** 367,402 ****
  ]]>

   <sect1 id="install-upgrading">
!   <title>If You Are Upgrading</title>

    <indexterm zone="install-upgrading">
     <primary>upgrading</primary>
    </indexterm>

    <para>
!    The internal data storage format changes with new releases of
!    <productname>PostgreSQL</>. Therefore, if you are upgrading an
!    existing installation that does not have a version number
     <quote>&majorversion;.x</quote>, you must back up and restore your
!    data as shown here. These instructions assume that your existing
!    installation is under the <filename>/usr/local/pgsql</> directory,
!    and that the data area is in <filename>/usr/local/pgsql/data</>.
!    Substitute your paths appropriately.
    </para>

    <procedure>
     <step>
      <para>
!      Make sure that your database is not updated during or after the
!      backup. This does not affect the integrity of the backup, but the
!      changed data would of course not be included. If necessary, edit
!      the permissions in the file
!      <filename>/usr/local/pgsql/data/pg_hba.conf</> (or equivalent) to
!      disallow access from everyone except you.
      </para>
-    </step>

-    <step>
      <para>
       <indexterm>
        <primary>pg_dumpall</primary>
--- 367,405 ----
  ]]>

   <sect1 id="install-upgrading">
!   <title>Upgrading</title>

    <indexterm zone="install-upgrading">
     <primary>upgrading</primary>
    </indexterm>

    <para>
!    These instructions assume that your existing installation is under the
!    <filename>/usr/local/pgsql</> directory, and that the data area is in
!    <filename>/usr/local/pgsql/data</>.  Substitute your paths
!    appropriately.
!   </para>
!
!   <para>
!    The internal data storage format typically changes in every major
!    release of <productname>PostgreSQL</>. Therefore, if you are upgrading
!    an existing installation that does not have a version number of
     <quote>&majorversion;.x</quote>, you must back up and restore your
!    data.  If you are upgrading from the same major version, the new version
!    can use your current data files, so a backup and restore is optional.
!    If you wish to avoid the backup/restore, merely skip those steps below.
    </para>

    <procedure>
     <step>
      <para>
!      If making a backup, make sure that your database is being updated.
!      This does not affect the integrity of the backup, but the changed
!      data would of course not be included. If necessary, edit the
!      permissions in the file <filename>/usr/local/pgsql/data/pg_hba.conf</>
!      (or equivalent) to disallow access from everyone except you.
      </para>

      <para>
       <indexterm>
        <primary>pg_dumpall</primary>
***************
*** 429,437 ****

     <step>
      <para>
!      If you are installing the new version at the same location as the
!      old one then shut down the old server, at the latest before you
!      install the new files:
  <screen>
  <userinput>pg_ctl stop</>
  </screen>
--- 432,438 ----

     <step>
      <para>
!      Shut down the old server:
  <screen>
  <userinput>pg_ctl stop</>
  </screen>
***************
*** 448,485 ****

     <step>
      <para>
!      If you are installing in the same place as the old version then
!      it is also a good idea to move the old installation out of the
!      way, in case you have trouble and need to revert to it.
!      Use a command like this:
! <screen>
  <userinput>mv /usr/local/pgsql /usr/local/pgsql.old</>
  </screen>
      </para>
     </step>
-   </procedure>

!   <para>
!    After you have installed <productname>PostgreSQL</> &version;, create a new database
!    directory and start the new server. Remember that you must execute
!    these commands while logged in to the special database user account
!    (which you already have if you are upgrading).
  <programlisting>
  <userinput>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</>
  <userinput>/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data</>
  </programlisting>
!    Finally, restore your data with
  <screen>
  <userinput>/usr/local/pgsql/bin/psql -d postgres -f <replaceable>outputfile</></userinput>
  </screen>
!    using the <emphasis>new</> <application>psql</>.
!   </para>

    <para>
     Further discussion appears in
     <![%standalone-include[the documentation,]]>
     <![%standalone-ignore[<xref linkend="migration">,]]>
!    which you are encouraged to read in any case.
    </para>
   </sect1>

--- 449,511 ----

     <step>
      <para>
!      If restoring from backup, rename or delete the old installation
!      directory.  It is a good idea to rename the directory, rather than
!      delete it, in case you have trouble and need to revert to it.  Keep
!      in mind the directory might consume significant disk space.  To rename
!      the directory, use a command like this:
! <screen>
  <userinput>mv /usr/local/pgsql /usr/local/pgsql.old</>
  </screen>
      </para>
     </step>

!    <step>
!     <para>
!      Install the new version of <productname>PostgreSQL</productname> as
!      outlined in <![%standalone-include[the next section.]]>
!      <![%standalone-ignore[<xref linkend="install-procedure">.]]>
!     </para>
!    </step>
!
!    <step>
!     <para>
!      Create a new database cluster if needed.  Remember that you must
!      execute these commands while logged in to the special database user
!      account (which you already have if you are upgrading).
  <programlisting>
  <userinput>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</>
+ </programlisting>
+     </para>
+    </step>
+
+    <step>
+     <para>
+      Start the database server, again from the special database user
+      account:
+ <programlisting>
  <userinput>/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data</>
  </programlisting>
!     </para>
!    </step>
!
!    <step>
!     <para>
!      Finally, restore your data from backup with
  <screen>
  <userinput>/usr/local/pgsql/bin/psql -d postgres -f <replaceable>outputfile</></userinput>
  </screen>
!      using the <emphasis>new</> <application>psql</>.
!     </para>
!    </step>
!   </procedure>

    <para>
     Further discussion appears in
     <![%standalone-include[the documentation,]]>
     <![%standalone-ignore[<xref linkend="migration">,]]>
!    including instructions on how the previous installation can continue
!    running while the new installation is installed.
    </para>
   </sect1>


Re: 14.4 If You Are Upgrading - Suggested Improvements

From
Peter Eisentraut
Date:
Bruce Momjian wrote:
> I have updated the installation documentation to clarify major vs.
> minor releases;  patch attached and applied.  I always suspected we
> were unclear on this.  Comments welcome.  I am not inclined to
> backpatch this to 8.2.X because it might be too significant a change.
>  URL of new text:

I think this is too weak:

"""
If you are upgrading from the same major version, the new version can
use your current data files, so a backup and restore is optional. If
you wish to avoid the backup/restore, merely skip those steps below.
"""

You write the backup/restore for minor versions is "optional", but when
would you make use of this option and why would users "wish" or not
wish to skip the steps?  The fact is, the backup and restore is not
optional, it is just unnecessary, and there is no question about
whether to skip the rest or not.
--
Peter Eisentraut
http://developer.postgresql.org/~petere/

Re: 14.4 If You Are Upgrading - Suggested Improvements

From
Bruce Momjian
Date:
Peter Eisentraut wrote:
> Bruce Momjian wrote:
> > I have updated the installation documentation to clarify major vs.
> > minor releases;  patch attached and applied.  I always suspected we
> > were unclear on this.  Comments welcome.  I am not inclined to
> > backpatch this to 8.2.X because it might be too significant a change.
> >  URL of new text:
>
> I think this is too weak:
>
> """
> If you are upgrading from the same major version, the new version can
> use your current data files, so a backup and restore is optional. If
> you wish to avoid the backup/restore, merely skip those steps below.
> """
>
> You write the backup/restore for minor versions is "optional", but when
> would you make use of this option and why would users "wish" or not
> wish to skip the steps?  The fact is, the backup and restore is not
> optional, it is just unnecessary, and there is no question about
> whether to skip the rest or not.

OK, I was unsure if we wanted to encourage minor release folks to still
do a backup in case there is a problem.

Updated text:

   The internal data storage format typically changes in every major
   release of <productname>PostgreSQL</>. Therefore, if you are upgrading
   an existing installation that does not have a version number of
   <quote>&majorversion;.x</quote>, you must back up and restore your
   data.  If you are upgrading from the same major version, the new version
   can use your current data files so you should skip the backup and
   restore steps below because they are unnecessary.

Thanks.

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/installation.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v
retrieving revision 1.276
diff -c -c -r1.276 installation.sgml
*** doc/src/sgml/installation.sgml    26 Jan 2007 22:52:50 -0000    1.276
--- doc/src/sgml/installation.sgml    27 Jan 2007 01:23:43 -0000
***************
*** 386,393 ****
     an existing installation that does not have a version number of
     <quote>&majorversion;.x</quote>, you must back up and restore your
     data.  If you are upgrading from the same major version, the new version
!    can use your current data files, so a backup and restore is optional.
!    If you wish to avoid the backup/restore, merely skip those steps below.
    </para>

    <procedure>
--- 386,393 ----
     an existing installation that does not have a version number of
     <quote>&majorversion;.x</quote>, you must back up and restore your
     data.  If you are upgrading from the same major version, the new version
!    can use your current data files so you should skip the backup and
!    restore steps below.
    </para>

    <procedure>

Re: 14.4 If You Are Upgrading - Suggested Improvements

From
Alvaro Herrera
Date:
Bruce Momjian wrote:

> Updated text:
>
>    The internal data storage format typically changes in every major
>    release of <productname>PostgreSQL</>. Therefore, if you are upgrading
>    an existing installation that does not have a version number of
>    <quote>&majorversion;.x</quote>, you must back up and restore your
>    data.  If you are upgrading from the same major version, the new version
>    can use your current data files so you should skip the backup and
>    restore steps below because they are unnecessary.

That's better, but I'd suggest using &majorversion;.x in the last
sentence as well, instead of "the same major version", because some
people does not yet grasp that we refer to "major" as the first two
digits, instead thinking that all "7" versions are compatible, and all
"8", etc.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

Re: 14.4 If You Are Upgrading - Suggested Improvements

From
Bruce Momjian
Date:
Done, patch attached.

---------------------------------------------------------------------------

Alvaro Herrera wrote:
> Bruce Momjian wrote:
>
> > Updated text:
> >
> >    The internal data storage format typically changes in every major
> >    release of <productname>PostgreSQL</>. Therefore, if you are upgrading
> >    an existing installation that does not have a version number of
> >    <quote>&majorversion;.x</quote>, you must back up and restore your
> >    data.  If you are upgrading from the same major version, the new version
> >    can use your current data files so you should skip the backup and
> >    restore steps below because they are unnecessary.
>
> That's better, but I'd suggest using &majorversion;.x in the last
> sentence as well, instead of "the same major version", because some
> people does not yet grasp that we refer to "major" as the first two
> digits, instead thinking that all "7" versions are compatible, and all
> "8", etc.
>
> --
> Alvaro Herrera                                http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.

--
  Bruce Momjian   bruce@momjian.us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/installation.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v
retrieving revision 1.277
diff -c -c -r1.277 installation.sgml
*** doc/src/sgml/installation.sgml    27 Jan 2007 01:27:36 -0000    1.277
--- doc/src/sgml/installation.sgml    29 Jan 2007 21:48:05 -0000
***************
*** 385,393 ****
     release of <productname>PostgreSQL</>. Therefore, if you are upgrading
     an existing installation that does not have a version number of
     <quote>&majorversion;.x</quote>, you must back up and restore your
!    data.  If you are upgrading from the same major version, the new version
!    can use your current data files so you should skip the backup and
!    restore steps below because they are unnecessary.
    </para>

    <procedure>
--- 385,394 ----
     release of <productname>PostgreSQL</>. Therefore, if you are upgrading
     an existing installation that does not have a version number of
     <quote>&majorversion;.x</quote>, you must back up and restore your
!    data.  If you are upgrading from <productname>PostgreSQL</>
!    <quote>&majorversion;.x</quote>, the new version can use your current
!    data files so you should skip the backup and restore steps below because
!    they are unnecessary.
    </para>

    <procedure>