postgreSQL备份数据

1、pg_dump 备份单一数据库

pg_dump仅导出数据库结构:
pg_dump -U TestRole1 -s -f TestDb1.sql TestDb1

备份某个database,备份结果以自定义压缩格式输出:
pg_dump -h localhost -p 5432 -U someuser -F c -b -v -f mydb.backup mydb

备份某个database,备份结果以SQL文本方式输出,输出结果中需包括CREATE DATABASE语句:
pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f mydb.backup mydb

备份某个database中所有名称以“pay”开头的表,备份结果以自定义压缩个数输出:
pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t *.pay* -f pay.backup mydb

备份某个database中hr和payroll这两个schema中的所有数据,备份结果以自定义压缩格式输出:
pg_dump -h localhost -p 5432 -U someuser -F c -b -v -n hr -n payroll -f hr_payroll.backup mydb

备份某个database中除了public schema中的数据以外的所有数据,备份结果以自定义压缩格式输出:
pg_dump -h localhost -p 5432 -U someuser -F c -b -v -N public -f all_sch_except_pub.backup mydb

将数据备份为SQL文本文件,且生成的INSERT语句是带有字段名列表的标准格式,该文件可以用于将数据导入到低于当前版本的PostgreSQL或者其他支出SQL的非PostgreSQL数据库中(之所有能够实现这种数据移植过程,是因为标准的SQL文本可以在任何支持SQL标准的数据库中执行):
pg_dump -h localhost -p 5432 -U someuser -F p --column-inserts -f select_tables.backup mydb

注:如果输出文件路径中含空格或者其他可能影响命令行正常处理的字符,请在路径两侧加上双引号,比如:"/path with spaces/mydb.backup"。请注意着在PostgreSQL中是一个通用的原则,即当你不确定某段文本是否能正常处理时,都可以加双引号。

从9.1版本开始支持目录格式选项,该选项会将每个表备份为某个文件夹下的一个单独的文件,这样就解决了以其他备份格式备份时可能存在的单个文件大小超出操作系统限制的问题。该选项是生成多个文件的唯一pg_dump备份格式选项。备份时会先创建一个新目录,然后逐个表将一个gzip格式的压缩文件和一个列出所有包含结构的文件填充到该目录中。如果备份开始时发现指定的目录已存在,那么该命令会报错并退出。
目录格式备份:
pg_dump -h localhost -p 5432 -U someuser -F d -f /somepath/a_directory mydb
从9.3版本开始支持并行备份选项--jobs (-j)。如果将其设定为--jobs=3,则后台会有三个线程并行执行当前备份任务。此选项只有在按目录格式进行备份时才会生效,每个写线程只负责写一个单独的文件,因此一定是输出结果为多个独立的文件时才可以并行。
目录格式并行备份:
pg_dump -h localhost -p 5432 -U someuser -j 3 -Fd -f /somepath/a_directory mydb

2、全部备份采用pg_dumpall

pg_dump进行单个数据库的备份,而pg_dumpall备份一个给出的集群中的每个数据库,同时还确保保留象用户和组这样的全局数据状态。使用方法如下:

pg_dumpall -h 192.168.0.XX  -p 5432 -U postgres > db.out

猜你喜欢

转载自www.cnblogs.com/hzy168/p/10293399.html