tests, it cannot guarantee that the database will not reach a state
in which the constraint condition is false (due to subsequent changes
of the other row(s) involved). This would cause a database dump and
- reload to fail. The reload could fail even when the complete
+ restore to fail. The restore could fail even when the complete
database state is consistent with the constraint, due to rows not
being loaded in an order that will satisfy the constraint. If
possible, use UNIQUE, EXCLUDE,
If what you desire is a one-time check against other rows at row
insertion, rather than a continuously-maintained consistency
guarantee, a custom trigger can be used
- to implement that. (This approach avoids the dump/reload problem because
+ to implement that. (This approach avoids the dump/restore problem because
pg_dump does not reinstall triggers until after
- reloading data, so that the check will not be enforced during a
- dump/reload.)
+ restoring data, so that the check will not be enforced during a
+ dump/restore.)
function.
PostgreSQL does not disallow
that, but it will not notice if there are rows in the table that now
violate the CHECK constraint. That would cause a
- subsequent database dump and reload to fail.
+ subsequent database dump and restore to fail.
The recommended way to handle such a change is to drop the constraint
(using ALTER TABLE), adjust the function definition,
and re-add the constraint, thereby rechecking it against all table rows.
pg_dump. But that behavior is undesirable for a
configuration table; any data changes made by the user need to be
included in dumps, or the extension will behave differently after a dump
- and reload.
+ and restore.
Dump scripts generated by
pg_dump automatically apply
- several, but not all, of the above guidelines. To reload a
+ several, but not all, of the above guidelines. To restore a
pg_dump dump as quickly as possible, you need to
do a few extra things manually. (Note that these points apply while
restoring a dump, not while creating it.
attached to a function when check_function_bodies is on.
Therefore, checks whose results might be affected by GUC parameters
definitely should be skipped when check_function_bodies is
- off, to avoid false failures when reloading a dump.
+ off, to avoid false failures when restoring a dump.
around since the original creation of the enum type). The slowdown is
usually insignificant; but if it matters, optimal performance can be
regained by dropping and recreating the enum type, or by dumping and
- reloading the database.
+ restoring the database.
function.
PostgreSQL does not disallow that,
but it will not notice if there are stored values of the domain type that
now violate the CHECK constraint. That would cause a
- subsequent database dump and reload to fail. The recommended way to
+ subsequent database dump and restore to fail. The recommended way to
handle such a change is to drop the constraint (using ALTER
DOMAIN), adjust the function definition, and re-add the
constraint, thereby rechecking it against stored data.
...). This will make restoration very slow; it is mainly
useful for making dumps that can be loaded into
non-
PostgreSQL databases.
- Any error during reloading will cause only rows that are part of the
+ Any error during restoring will cause only rows that are part of the
problematic INSERT to be lost, rather than the
entire table contents.
This option is relevant only when creating a data-only dump.
It instructs
pg_dump to include commands
to temporarily disable triggers on the target tables while
- the data is reloaded. Use this if you have referential
+ the data is restored. Use this if you have referential
integrity checks or other triggers on the tables that you
- do not want to invoke during data reload.
+ do not want to invoke during data restore.
than COPY). This will make restoration very slow;
it is mainly useful for making dumps that can be loaded into
non-
PostgreSQL databases.
- Any error during reloading will cause only rows that are part of the
+ Any error during restoring will cause only rows that are part of the
problematic INSERT to be lost, rather than the
entire table contents. Note that the restore might fail altogether if
you have rearranged column order. The
target the root of the partitioning hierarchy that contains it, rather
than the partition itself. This causes the appropriate partition to
be re-determined for each row when the data is loaded. This may be
- useful when reloading data on a server where rows do not always fall
+ useful when restoring data on a server where rows do not always fall
into the same partitions as they did on the original server. That
could happen, for example, if the partitioning column is of type text
and the two systems have different definitions of the collation used
with this option, because
pg_restore will
not know exactly which partition(s) a given archive data item will
load data into. This could result in inefficiency due to lock
- conflicts between parallel jobs, or perhaps even reload failures due
+ conflicts between parallel jobs, or perhaps even restore failures due
to foreign key constraints being set up before all the relevant data
is loaded.
Dump data as INSERT commands (rather than
COPY). Controls the maximum number of rows per
INSERT command. The value specified must be a
- number greater than zero. Any error during reloading will cause only
+ number greater than zero. Any error during restoring will cause only
rows that are part of the problematic INSERT to be
lost, rather than the entire table contents.
This option is relevant only when creating a data-only dump.
It instructs
pg_dumpall to include commands
to temporarily disable triggers on the target tables while
- the data is reloaded. Use this if you have referential
+ the data is restored. Use this if you have referential
integrity checks or other triggers on the tables that you
- do not want to invoke during data reload.
+ do not want to invoke during data restore.
target the root of the partitioning hierarchy that contains it, rather
than the partition itself. This causes the appropriate partition to
be re-determined for each row when the data is loaded. This may be
- useful when reloading data on a server where rows do not always fall
+ useful when restoring data on a server where rows do not always fall
into the same partitions as they did on the original server. That
could happen, for example, if the partitioning column is of type text
and the two systems have different definitions of the collation used
Dump data as INSERT commands (rather than
COPY). Controls the maximum number of rows per
INSERT command. The value specified must be a
- number greater than zero. Any error during reloading will cause only
+ number greater than zero. Any error during restoring will cause only
rows that are part of the problematic INSERT to be
lost, rather than the entire table contents.
- To reload database(s) from this file, you can use:
+ To restore database(s) from this file, you can use:
$ psql -f db.out postgres
After running this command, it should be possible to start the server,
but bear in mind that the database might contain inconsistent data due to
partially-committed transactions. You should immediately dump your data,
- run initdb, and reload. After reload, check for
+ run initdb, and restore. After restore, check for
inconsistencies and repair as needed.
discussed below. If you are not able to determine correct values for all
these fields, can still be used, but
the recovered database must be treated with even more suspicion than
- usual: an immediate dump and reload is imperative. Do not
+ usual: an immediate dump and restore is imperative. Do not
execute any data-modifying operations in the database before you dump,
as any such action is likely to make the corruption worse.
This option is relevant only when performing a data-only restore.
It instructs
pg_restore to execute commands
to temporarily disable triggers on the target tables while
- the data is reloaded. Use this if you have referential
+ the data is restored. Use this if you have referential
integrity checks or other triggers on the tables that you
- do not want to invoke during data reload.
+ do not want to invoke during data restore.
- To reload the dump into a new database called newdb:
+ To restore the dump into a new database called newdb:
$ createdb -T template0 newdb
pg_upgrade (formerly called
pg_migrator) allows data
stored in
PostgreSQL data files to be upgraded to a later
PostgreSQL
- major version without the data dump/reload typically required for
+ major version without the data dump/restore typically required for
major version upgrades, e.g., from 9.5.8 to 9.6.4 or from 10.7 to 11.2.
It is not required for minor version upgrades, e.g., from 9.6.2 to 9.6.3
or from 10.1 to 10.2.
The option allows multiple CPU cores to be used
- for copying/linking of files and to dump and reload database schemas
+ for copying/linking of files and to dump and restore database schemas
in parallel; a good place to start is the maximum of the number of
CPU cores and tablespaces. This option can dramatically reduce the
time to upgrade a multi-database server running on a multiprocessor
For
major releases of
PostgreSQL, the
internal data storage format is subject to change, thus complicating
upgrades. The traditional method for moving data to a new major version
- is to dump and reload the database, though this can be slow. A
+ is to dump and restore the database, though this can be slow. A
faster method is . Replication methods are
also available, as discussed below.
(If you are using a pre-packaged version
One upgrade method is to dump data from one major version of
-
PostgreSQL and re
load it in another — to do
+
PostgreSQL and re
store it in another — to do
this, you must use a logical backup tool like
level backup methods will not work. (There are checks in place that prevent
explicitly when creating tsvector values inside triggers,
so that the column's contents will not be affected by changes to
default_text_search_config. Failure to do this is likely to
- lead to problems such as search results changing after a dump and reload.
+ lead to problems such as search results changing after a dump and restore.