pg_dump、pg_restore实践
2020-07-10 本文已影响0人
Hmcf
常见选项
- -a --data-only
只转储数据,而不转储模式(数据定义)。表数据、大对象和序列值都会被转储。 - -c --clean
在输出创建数据库对象的命令之前输出清除(删除)它们的命令 (除非也指定了--if-exists,如果任何对象不存在于 目的数据库中,恢复可能会产生一些伤害性的错误消息)。
这个选项只对纯文本格式有意义。对于归档格式,你可以在调用pg_restore时指定该选项。 - -E --encoding=encoding
以指定的字符集编码创建转储。 - -f --file=file
将输出发送到指定文件。
*-F --format=format
选择输出的格式。
[p 输出一个纯文本形式的SQL脚本文件(默认值)]
[c 输出一个适合于作为pg_restore输入的自定义格式归档。和目录输出格式一起,这是最灵活的输出格式,它允许在恢复时手动选择和排序已归档的项。这种格式在默认情况还会被压缩。]
[d、t] - -j --jobs=njobs
通过同时归档njobs个表来运行并行转储。这个选项缩减了转储的时间,但是它也增加了数据库服务器上的负载。你只能和目录输出格式[d]一起使用这个选项,因为这是唯一一种让多个进程能在同一时间写其数据的输出格式。 - -n --schema=schema
只转储匹配schema的模式,这会选择模式本身以及它所包含的所有对象。当没有指定这个选项时,目标数据库中所有非系统模式都将被转储。多个模式可以通过书写多个-n开关来选择。 - -N --exclude-schema=schema
不转储匹配schema模式的任何模式。该模式被根据-n所用的相同规则被解释。-N可以被给定多次来排除匹配几个模式中任意一个的模式。
当-n和-N都被给定时,该行为是只转储匹配至少一个-n开关但是不匹配-N开关的模式。如果只有-N而没有-n,那么匹配-N的模式会被从一个正常转储中排除。 - -s --schema-only
只转储对象定义(模式),而非数据。这个选项是--data-only的逆选项。 - -t --table=table
只转储名字匹配table的表,“table”还可以包括视图、物化视图、序列和外部表。通过写多个-t开关可以选择多个表。 - -T --exclude-table=table
不转储匹配table模式的任何表。该模式被根据-t所用的相同规则被解释。-T可以被给定多次来排除匹配几个模式中任意一个的模式。
当-t和-T都被给定时,该行为是只转储匹配至少一个-t开关但是不匹配-T开关的表。如果只有-T而没有-t,那么匹配-T的表会被从一个正常转储中排除。 - -Z 0..9 --compress=0..9
指定要使用的压缩级别。零意味着不压缩。对于自定义归档格式,这会指定个体表数据段的压缩,并且默认是进行中等级别的压缩。对于纯文本输出,设置一个非零压缩级别会导致整个输出文件被压缩,就好像它被gzip处理过一样,但是默认是不压缩。tar 归档格式当前完全不支持压缩。 - --if-exists
时间条件性命令(即增加一个IF EXISTS子句)来清除数据库和其他对象。 只有同时指定了--clean时,这个选项才可用。 - -d --dbname=dbname
指定要连接到的数据库名。 - -h --host=host
指定服务器正在运行的机器的主机名。 - -p --port=port
- -W --password
强制pg_dump在连接到一个数据库之前提示要求一个口令。
pg_dump实践
- 备份数据库结构
su - postgres
pg_dump -Fc -s -f testdbschema.sql testdb
- 备份数据库数据
su - postgres
pg_dump -Fc -a -f testdbdata.sql testdb
- 备份数据库结构和数据
su - postgres
pg_dump -Fc -f testdbschemadata.sql testdb
- 备份数据库中指定表结构
pg_dump -Fc -s -t citycode -f citycode_tab.sql testdb
- 备份数据库中指定表数据
pg_dump -Fc -a -t citycode -f citycode_data.sql testdb
- 备份数据库中指定表(结构和数据)
pg_dump -Fc -t citycode -f citycode_tabdata.sql testdb
pg_restore实践
- 恢复数据结构(only schema)
su - postgres
pg_restore -s -d testdb testdbschema.sql
- 恢复数据库数据(only data)
su - postgres
pg_restore -a -d testdb testdbdata.sql
- 恢复数据库结构和数据(schema and data)
su - postgres
pg_restore -d testdb testdbschemadata.sql
- 恢复表结构
pg_restore -s -t citycode -d testdb citycode_schema.sql
- 恢复表数据
pg_restore -a -t citycode -d testdb citycode_data.sql
- 恢复表(结构和数据)
pg_restore -t citycode -d testdb citycode_schemadata.sql