dwww Home | Manual pages | Find package

PG_UPGRADECLUSTER(1)    Debian PostgreSQL infrastructure   PG_UPGRADECLUSTER(1)

NAME
       pg_upgradecluster - upgrade an existing PostgreSQL cluster to a new
       major version.

SYNOPSIS
       pg_upgradecluster [-v newversion] oldversion name [newdatadir]

DESCRIPTION
       pg_upgradecluster upgrades an existing PostgreSQL server cluster (i. e.
       a collection of databases served by a postgres instance) to a new
       version specified by newversion (default: latest available version).
       The configuration files of the old version are copied to the new cluster
       and adjusted for the new version.

       By default, pg_dump(1) is used to migrate data and indexes to the new
       cluster. This is slow, but safe. Upgrade variants based on pg_upgrade(1)
       can be selected using the --method=upgrade parameter. This is faster,
       but care must be taken when using it in the context of an operating
       system upgrade. The sorting order ("collation") used in indexes is
       determined by libc and libicu, and new versions of these libraries might
       have a differ ordering, requiring index rebuilds after the upgrade, or
       acknowledging that the ordering did not change using the ALTER COLLATION
       REFRESH VERSION command.  This step is not automated by
       pg_upgradecluster.

       The cluster of the old version will be configured to use a previously
       unused port since the upgraded one will use the original port. The old
       cluster is not automatically removed. After upgrading, please verify
       that the new cluster indeed works as expected; if so, you should remove
       the old cluster with pg_dropcluster(8). Please note that the old cluster
       is set to "manual" startup mode, in order to avoid inadvertently
       changing it; this means that it will not be started automatically on
       system boot, and you have to use pg_ctlcluster(8) to start/stop it. See
       section "STARTUP CONTROL" in pg_createcluster(8) for details.

       The newdatadir argument can be used to specify a non-default data
       directory of the upgraded cluster. It is passed to pg_createcluster. If
       not specified, this defaults to /var/lib/postgresql/newversion/name.

OPTIONS
       -v newversion
           Set the version to upgrade to (default: latest available).

       --check
           Check if all packages required for the upgrade are installed.

       --force-packages
           Proceed  with  upgrading  even  when  not  all packages from the old
           PostgreSQL version are installed for the new version as well.

       --logfile filel
           Set a custom log file path for the upgraded database cluster.

       --locale=locale
           Set the default locale for the upgraded database  cluster.  If  this
           option  is  not  specified,  the  locale  is  inherited from the old
           cluster.

           When upgrading to PostgreSQL 11 or  newer,  this  option  no  longer
           allows    switching    the   encoding   of   individual   databases.
           (pg_dumpall(1) was changed to retain database encodings.)

       --lc-collate=locale
       --lc-ctype=locale
       --lc-messages=locale
       --lc-monetary=locale
       --lc-numeric=locale
       --lc-time=locale
           Like --locale, but only sets the locale in the specified category.

       -m, --method=dump|upgrade|link|clone
           Specify the upgrade method.  dump uses pg_dump(1) and pg_restore(1),
           upgrade uses pg_upgrade(1).  The default is dump.

           link and clone are shorthands for -m upgrade --link and  -m  upgrade
           --clone, respectively.

       -k, --link
           In  pg_upgrade  mode, use hard links instead of copying files to the
           new cluster.  This option is merely passed on  to  pg_upgrade.   See
           pg_upgrade(1) for details.

       --clone
           In  pg_upgrade  mode,  use  efficient  file  cloning  (also known as
           "reflinks" on some systems) instead of  copying  files  to  the  new
           cluster.  This  option  is  merely  passed  on  to  pg_upgrade.  See
           pg_upgrade(1) for details.

       --data-checksums, --no-data-checksums
           By default, the new cluster is set up to use data page checksums  if
           the old cluster already uses them. Additionally, when using the dump
           upgrade  method,  the  new cluster will use data page checksums when
           upgrading to  PostgreSQL  18  or  later  (which  enables  data  page
           checksums by default).

           The  --method=dump  behavior  can  explictly  be  controlled  by the
           --data-checksums and --no-data-checksums options.

       -j, --jobs
           In pg_upgrade mode, number of simultaneous processes  to  use.  This
           option  is  passed  on to pg_upgrade. See pg_upgrade(1) for details.
           It is also  used  by  the  analyze  upgrade  hook  (via  the  PGJOBS
           environment variable).

       --keep-port
           By  default,  the  old  cluster  is moved to a new port, and the new
           cluster is moved to the  original  port  so  clients  will  see  the
           upgraded cluster. This option disables that.

       --rename=new cluster name
           Use a different name for the upgraded cluster.

       --old-bindir=directory
           Passed to pg_upgrade.

       --maintenance-db=database
           Database  to  connect  to  for  maintenance queries.  The default is
           template1.

       --[no-]start
           Start the new database cluster after upgrading. The  default  is  to
           start  the new cluster if the old cluster was running, or if upgrade
           hook scripts are present.

       --keep-on-error
           If upgrading fails, the  newly  created  cluster  is  removed.  This
           option disables that.

HOOK SCRIPTS
       Some  PostgreSQL  extensions  like  PostGIS  need  metadata in auxiliary
       tables which must not be upgraded  from  the  old  version,  but  rather
       initialized  for the new version before copying the table data. For this
       purpose, extensions (as well as  administrators,  of  course)  can  drop
       upgrade  hook  scripts into /etc/postgresql-common/pg_upgradecluster.d/.
       Script file names must consist entirely of upper and lower case letters,
       digits, underscores, and  hyphens;  in  particular,  dots  (i.  e.  file
       extensions) are not allowed.

       Scripts in that directory will be called with the following arguments:

       <old version> <cluster name> <new version> <phase>

       Phases:

       init
           A  virgin  cluster  of  version  new version has been created, i. e.
           this new cluster will already have template1 and  postgres,  but  no
           user  databases.  Please  note  that you should not create tables in
           this phase, since they will be overwritten by  the  dump/restore  or
           pg_upgrade operation.

       finish
           All  data from the old version cluster has been dumped/reloaded into
           the new one. The old cluster still exists, but is not running.

       Failing scripts will abort the upgrade.  The scripts are called  as  the
       user who owns the database.

SEE ALSO
       pg_createcluster(8), pg_dropcluster(8), pg_lsclusters(1), pg_wrapper(1),
       pg_dump(1), pg_upgrade(1)

AUTHORS
       Martin Pitt <mpitt@debian.org>, Christoph Berg <myon@debian.org>

Debian                             2025-05-07              PG_UPGRADECLUSTER(1)

Generated by dwww version 1.16 on Tue Dec 16 06:03:40 CET 2025.