pg_dump

太阳2年前技术文章774

逻辑备份

    PG提供了pg_dump、pg_dumpall两种方式进行逻辑备份,其区别就是pg_dumpall只能将数据库全部数据集dump到一个脚本文件中,而pg_dump可以选择指定数据库进行逻辑备份。两者均可以保证dump数据的一致性,且不阻塞其他会话的正常读写操作。

pg_dump语法

pg_dump [connection_option] [option] [dbname]

connection_option

参数

含义

-h/--host

主机host

-p/--port

端口port

-U

用户名username

-w

从不提示密码,若服务器请求需要密码认证,且密码无法通过其他方式获取会导致命令连接失败

-W

强制pg_dump连接一个数据库之前提示密码,一般不需要关注该参数

--role

若验证用户权限不够该命令可保证切换至到相应权限的角色下

dbname

指定逻辑备份数据库

option

参数

含义

-a/--data-only

只输出数据、不输出表定义SQL语句,只针对纯文本格式有意义

-b/--blob

dump是否包含大对象,该参数默认打开

-c/--clean

是否包含清理对象语句,只针对纯文本格式有意义

-C/--create

是否输出create database语句,只针对纯文本格式有意义

-E/--encoding

指定字符集编码格式

-f/--file

输出到指定文件

-F/--format

p、c、d、t四种格式,详情如下

-n/--schema

只转储满足匹配下的schema包含的对象、可指定多个模式、也可以使用通配符匹配

-N/--exclude-schema

不转储满足匹配条件下指定的schema下的对象

-O/--no-owner

表示不把对象所有权设置为源数据库中的owner

-s/--schema-only

只输出对象定义,不输出数据

-t/--table

只转储满足匹配的表、视图、序列

-T/--exclude-table

不转储满足匹配条件下的表

-Z/--compress=0...9

压缩级别,0表示不压缩。默认不压缩

--insert

将数据转储为SQL语句格式,该参数下恢复速度会很慢

--column-inserts

转储为Insert into table(col,..) values的格式,避免了--insert下源目标端表列顺序不一致导致数据恢复报错

--lock-wait-timeout

指定在dump时等待获取共享表锁的超时时间

--no-tablespaces

转储数据不输出选择指定的表空间,表示恢复数据都使用默认表空间

pg_dump 支持4种格式

  • p, plain:

默认格式, 备份输出为可读的text文本. 还原时在数据库中直接执行备份文本的SQL即可.

  • c, custom

可自定义的归档格式, 同时默认开启了数据压缩,还原时可以调整备份对象的还原顺序,同时支持选择还原的对象。

备份写入到一个文件中. 需要注意文件系统支持的单个文件大小。

这个格式必须使用pg_restore命令进行还原。

  • d, directory

目录归档格式, 与custom格式类似, 需要使用pg_restore还原. 但是目录归档格式下会创建一个目录, 然后每个表或者每个大对象对应一个备份输出文件.

加上TOC文件名描述备份的详细信息, 这个格式默认支持压缩, 同时支持并行导出.

  • t, tar

tar归档格式, 不支持压缩, 同时限制每个表最大不能超过8GB, 同样需要使用pg_restore还原.


示例

备份指定数据库下所有对象

pg_dump -U xxx -p xxx -h xxx db_name -f db_name.sql

备份指定数据库下的指定表

--备份public下的t1、t2表
pg_dump -U xxx -p xxx -h xxx db_name -n public -t t1 -t t2
--备份public下的满足t1*的所有表
pg_dump -U xxx -p xxx -h xxx db_name -n public -t 't1*'

将逻辑备份转储为custom-format的归档文件

pg_dump -U xxx -p xxx -h xxx db_name -Fc -f db1.dump

将逻辑备份通过directory-format进行归档备份,并开启一定并发线程

pg_dump -U xxx -p xxx -h xxx db_name -Fd -j 5 -f back.sql


标签: PostgreSQL

相关文章

PG的多版本并发控制(三)

三、多版本并发控制3.1 常见多版本并发的实现方式第一种方式是,数据库仅保存最新版本数据,将发生变更的旧行版本数据写到其他地方如undo,当需要读取旧版本数据时,通过undo重构。oracle和MyS...

PG的统计信息(三)

1.3 数据分布类统计信息1.3.1 pg_stats通过对pg_stats的查询,可以查看每个字段的数据分析统计信息,类似SQL Server的直方图,为优化器选择最佳执行计划提供依据,pg_sta...

PG的多版本并发控制(一)

PG的多版本并发控制(一)

一、 表系统字段几个比较重要概念1.1  tupletuple表示表中的数据行,在MySQL中用row表示。在表数据页中,主要分为普通的数据元祖和TOAST元祖。以下是一个普通数据元祖的结构,主要由三...

PG的pg_stat_statements插件

pg_stat_statements可追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资源开销,分析TOP SQL。一、插件安装1、编译安装进入postgresql源码目录...

PG的锁(三)

六、锁的维护6.1 锁相关参数deadlock_timeout(integer):默认1s,表示pg数据库仅对锁超时大于1s的情况进行死锁检测。log_lock_waits : 默认关闭,若打开该参数...

PG的统计信息(一)

一、统计信息1.1 PG统计信息概述pg的统计信息主要分为两种:第一类统计信息是是负载指标“统计信息”(Monitoring stats),通过stat collector进程进行实时采集更新的负载指...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。