diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2025-04-04 10:05:38 -0400 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2025-04-04 16:01:22 -0400 |
commit | 1495eff7bdb0779cc54ca04f3bd768f647240df2 (patch) | |
tree | e4160823fd79737bf1d527da8eadf6f3f82570c6 /doc/src | |
parent | 2b69afbe50d5e39cc7d9703b3ab7acc4495a54ea (diff) | |
download | postgresql-1495eff7bdb0779cc54ca04f3bd768f647240df2.tar.gz postgresql-1495eff7bdb0779cc54ca04f3bd768f647240df2.zip |
Non text modes for pg_dumpall, correspondingly change pg_restore
pg_dumpall acquires a new -F/--format option, with the same meanings as
pg_dump. The default is p, meaning plain text. For any other value, a
directory is created containing two files, globals.data and map.dat. The
first contains SQL for restoring the global data, and the second
contains a map from oids to database names. It will also contain a
subdirectory called databases, inside which it will create archives in
the specified format, named using the database oids.
In these casess the -f argument is required.
If pg_restore encounters a directory containing globals.dat, and no
toc.dat, it restores the global settings and then restores each
database.
pg_restore acquires two new options: -g/--globals-only which suppresses
restoration of any databases, and --exclude-database which inhibits
restoration of particualr database(s) in the same way the same option
works in pg_dumpall.
Author: Mahendra Singh Thalor <mahi6run@gmail.com>
Co-authored-by: Andrew Dunstan <andrew@dunslane.net>
Reviewed-by: jian he <jian.universality@gmail.com>
Reviewed-by: Srinath Reddy <srinath2133@gmail.com>
Reviewed-by: Álvaro Herrera <alvherre@alvh.no-ip.org>
Discussion: https://postgr.es/m/cb103623-8ee6-4ba5-a2c9-f32e3a4933fa@dunslane.net
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/ref/pg_dumpall.sgml | 86 | ||||
-rw-r--r-- | doc/src/sgml/ref/pg_restore.sgml | 66 |
2 files changed, 139 insertions, 13 deletions
diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml index 765b30a3a66..43fdab2d77e 100644 --- a/doc/src/sgml/ref/pg_dumpall.sgml +++ b/doc/src/sgml/ref/pg_dumpall.sgml @@ -16,7 +16,7 @@ PostgreSQL documentation <refnamediv> <refname>pg_dumpall</refname> - <refpurpose>extract a <productname>PostgreSQL</productname> database cluster into a script file</refpurpose> + <refpurpose>extract a <productname>PostgreSQL</productname> database cluster using a specified dump format</refpurpose> </refnamediv> <refsynopsisdiv> @@ -33,7 +33,7 @@ PostgreSQL documentation <para> <application>pg_dumpall</application> is a utility for writing out (<quote>dumping</quote>) all <productname>PostgreSQL</productname> databases - of a cluster into one script file. The script file contains + of a cluster into an archive. The archive contains <acronym>SQL</acronym> commands that can be used as input to <xref linkend="app-psql"/> to restore the databases. It does this by calling <xref linkend="app-pgdump"/> for each database in the cluster. @@ -52,12 +52,17 @@ PostgreSQL documentation </para> <para> - The SQL script will be written to the standard output. Use the + Plain text SQL scripts will be written to the standard output. Use the <option>-f</option>/<option>--file</option> option or shell operators to redirect it into a file. </para> <para> + Archives in other formats will be placed in a directory named using the + <option>-f</option>/<option>--file</option>, which is required in this case. + </para> + + <para> <application>pg_dumpall</application> needs to connect several times to the <productname>PostgreSQL</productname> server (once per database). If you use password authentication it will ask for @@ -121,11 +126,86 @@ PostgreSQL documentation <para> Send output to the specified file. If this is omitted, the standard output is used. + Note: This option can only be omitted when <option>--format</option> is plain </para> </listitem> </varlistentry> <varlistentry> + <term><option>-F <replaceable class="parameter">format</replaceable></option></term> + <term><option>--format=<replaceable class="parameter">format</replaceable></option></term> + <listitem> + <para> + Specify the format of dump files. In plain format, all the dump data is + sent in a single text stream. This is the default. + + In all other modes, <application>pg_dumpall</application> first creates two files: + <filename>global.dat</filename> and <filename>map.dat</filename>, in the directory + specified by <option>--file</option>. + The first file contains global data, such as roles and tablespaces. The second + contains a mapping between database oids and names. These files are used by + <application>pg_restore</application>. Data for individual databases is placed in + <filename>databases</filename> subdirectory, named using the database's <type>oid</type>. + + <variablelist> + <varlistentry> + <term><literal>d</literal></term> + <term><literal>directory</literal></term> + <listitem> + <para> + Output directory-format archives for each database, + suitable for input into pg_restore. The directory + will have database <type>oid</type> as its name. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>p</literal></term> + <term><literal>plain</literal></term> + <listitem> + <para> + Output a plain-text SQL script file (the default). + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>c</literal></term> + <term><literal>custom</literal></term> + <listitem> + <para> + Output a custom-format archive for each database, + suitable for input into pg_restore. The archive + will be named <filename>dboid.dmp</filename> where <type>dboid</type> is the + <type>oid</type> of the database. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><literal>t</literal></term> + <term><literal>tar</literal></term> + <listitem> + <para> + Output a tar-format archive for each database, + suitable for input into pg_restore. The archive + will be named <filename>dboid.tar</filename> where <type>dboid</type> is the + <type>oid</type> of the database. + </para> + </listitem> + </varlistentry> + + </variablelist> + + Note: see <xref linkend="app-pgdump"/> for details + of how the various non plain text archives work. + + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>--filter=<replaceable class="parameter">filename</replaceable></option></term> <listitem> <para> diff --git a/doc/src/sgml/ref/pg_restore.sgml b/doc/src/sgml/ref/pg_restore.sgml index c840a807ae9..f14e5866f6c 100644 --- a/doc/src/sgml/ref/pg_restore.sgml +++ b/doc/src/sgml/ref/pg_restore.sgml @@ -18,8 +18,9 @@ PostgreSQL documentation <refname>pg_restore</refname> <refpurpose> - restore a <productname>PostgreSQL</productname> database from an - archive file created by <application>pg_dump</application> + restore a <productname>PostgreSQL</productname> database or cluster + from an archive created by <application>pg_dump</application> or + <application>pg_dumpall</application> </refpurpose> </refnamediv> @@ -38,13 +39,14 @@ PostgreSQL documentation <para> <application>pg_restore</application> is a utility for restoring a - <productname>PostgreSQL</productname> database from an archive - created by <xref linkend="app-pgdump"/> in one of the non-plain-text + <productname>PostgreSQL</productname> database or cluster from an archive + created by <xref linkend="app-pgdump"/> or + <xref linkend="app-pg-dumpall"/> in one of the non-plain-text formats. It will issue the commands necessary to reconstruct the - database to the state it was in at the time it was saved. The - archive files also allow <application>pg_restore</application> to + database or cluster to the state it was in at the time it was saved. The + archives also allow <application>pg_restore</application> to be selective about what is restored, or even to reorder the items - prior to being restored. The archive files are designed to be + prior to being restored. The archive formats are designed to be portable across architectures. </para> @@ -52,10 +54,17 @@ PostgreSQL documentation <application>pg_restore</application> can operate in two modes. If a database name is specified, <application>pg_restore</application> connects to that database and restores archive contents directly into - the database. Otherwise, a script containing the SQL - commands necessary to rebuild the database is created and written + the database. + When restoring from a dump made by<application>pg_dumpall</application>, + each database will be created and then the restoration will be run in that + database. + + Otherwise, when a database name is not specified, a script containing the SQL + commands necessary to rebuild the database or cluster is created and written to a file or standard output. This script output is equivalent to - the plain text output format of <application>pg_dump</application>. + the plain text output format of <application>pg_dump</application> or + <application>pg_dumpall</application>. + Some of the options controlling the output are therefore analogous to <application>pg_dump</application> options. </para> @@ -140,6 +149,8 @@ PostgreSQL documentation commands that mention this database. Access privileges for the database itself are also restored, unless <option>--no-acl</option> is specified. + <option>--create</option> is required when restoring multiple databases + from an archive created by <application>pg_dumpall</application>. </para> <para> @@ -167,6 +178,28 @@ PostgreSQL documentation </varlistentry> <varlistentry> + <term><option>--exclude-database=<replaceable class="parameter">pattern</replaceable></option></term> + <listitem> + <para> + Do not restore databases whose name matches + <replaceable class="parameter">pattern</replaceable>. + Multiple patterns can be excluded by writing multiple + <option>--exclude-database</option> switches. The + <replaceable class="parameter">pattern</replaceable> parameter is + interpreted as a pattern according to the same rules used by + <application>psql</application>'s <literal>\d</literal> + commands (see <xref linkend="app-psql-patterns"/>), + so multiple databases can also be excluded by writing wildcard + characters in the pattern. When using wildcards, be careful to + quote the pattern if needed to prevent shell wildcard expansion. + </para> + <para> + This option is only relevant when restoring from an archive made using <application>pg_dumpall</application>. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-e</option></term> <term><option>--exit-on-error</option></term> <listitem> @@ -316,6 +349,19 @@ PostgreSQL documentation </varlistentry> <varlistentry> + <term><option>-g</option></term> + <term><option>--globals-only</option></term> + <listitem> + <para> + Restore only global objects (roles and tablespaces), no databases. + </para> + <para> + This option is only relevant when restoring from an archive made using <application>pg_dumpall</application>. + </para> + </listitem> + </varlistentry> + + <varlistentry> <term><option>-I <replaceable class="parameter">index</replaceable></option></term> <term><option>--index=<replaceable class="parameter">index</replaceable></option></term> <listitem> |