PostgreSQL Backup and Restore

2023-04-12  本文已影响0人  华阳_3bcf

SQL dump

It will generate a text file with SQL commands to recreate the database.

Dump 单独数据库

The basic usage of this command is:

pg_dump dbname > outfile

Restoring the Dump

The text files created by pg_dump are intended to be read in by the psql program. The general command form to restore a dump is

psql dbname < infile

where infile is the file output by the pg_dump command. The database dbname will not be created by this command

Dump 所有

pg_dump只能备份单个数据库,而且恢复的时候需要创建空数据库。pg_dumpall可以备份所有数据库,并且备份角色、表空间。

pg_dump dumps only a single database at a time, and it does not dump information about roles or tablespaces (because those are cluster-wide rather than per-database). To support convenient dumping of the entire contents of a database cluster, the pg_dumpall program is provided. pg_dumpall backs up each database in a given cluster, and also preserves cluster-wide data such as role and tablespace definitions. The basic usage of this command is:

pg_dumpall > outfile

The resulting dump can be restored with psql:

psql -f infile postgres

可以指定任何数据库名,如果恢复到一个空的集群中,通常使用postgres数据库

处理大数据(压缩、分割)

Some operating systems have maximum file size limits that cause problems when creating large pg_dump output files. Fortunately, pg_dump can write to the standard output, so you can use standard Unix tools to work around this potential problem. There are several possible methods:

Use compressed dumps. You can use your favorite compression program, for example gzip:

pg_dump dbname | gzip > filename.gz

Reload with:

gunzip -c filename.gz | psql dbname

or:

cat filename.gz | gunzip | psql dbname

Use split. The split command allows you to split the output into smaller files that are acceptable in size to the underlying file system. For example, to make chunks of 1 megabyte:

pg_dump dbname | split -b 1m - filename

Reload with:

cat filename* | psql dbname

File System Level Backup (冷备份)

Directly copy the files that PostgreSQL uses to store the data in the database

for example:

$ tar -cf backup.tar /var/lib/pgsql/14/data/base

限制:需要停掉数据库再操作。

Continuous Archiving and Point-in-Time Recovery (PITR)

基于WAL,这种方式不常用。

At all times, PostgreSQL maintains a write ahead log (WAL) in the pg_xlog/ subdirectory of the cluster's data directory. The log records every change made to the database's data files.

Refs:

https://www.postgresql.org/docs/14/backup.html

https://developer.aliyun.com/article/59359

上一篇 下一篇

猜你喜欢

热点阅读