PostgreSQL教程(9)逻辑备份工具pg_dump使用教程

PostgreSQL教程(9)逻辑备份工具pg_dump使用教程

一、PostgreSQL 逻辑备份介绍

PostgreSQL 原生支持的逻辑备份工具为pg_dump和pgdump_all。数据库逻辑备份的原理都相同,都是将数据以SQL语句的形式输出到一个文本文件,然后再将备份文件中的SQL语句进行回放的形式进行数据还原。在进行备份时会对当前数据库状态进行快照,然后基于快照来进行数据转储,避免因为备份而阻塞其他事务。换言之,在备份过程中发生的更新就不会被转储下来了。

pg_dump / pg_dumpall 区别如下:

· pg_dump:备份指定的数据库和对象,但是不包含角色、表空间等全局对象。备份时支持多种格式导出,如SQL脚本(默认)、目录格式、tar格式、pg_restore专用格式等。常用于单库迁移或临时备份部分schema、部分表

· pg_dump_all:通过内部调用pg_dump来对整个实例的所有对象进行备份,包括用户、角色、表空间,适合做全库迁移。因为备份的是整个数据库对象,包括角色和表空间,所以备份和恢复操作都需要使用管理员权限来完成。在日常运维中,更多使用它来备份全局的角色和表空间而不是数据


二、pg_dump 使用说明

1、pg_dump常用选项

-h:指定需要进行备份的数据库主机IP

-p:指定需要进行备份的数据库端口

-U:指定需要进行备份的数据库用户名
-W:以交互形式输入密码

-f:将备份输出到指定文件中
-F | --format:指定备份格式,默认为p,表示备份文件为SQL格式,该格式的备份文件可以使用导入的方式进行还原;c为二进制格式,只能使用pg_restore还原;d为备份到指定目录中,并且提供压缩;t为备份为tar格式

-a | --data-only:只备份数据,不包含表结构

-s | --schema-only:只备份表结构,不包含数据

-c | --clean:是否生成清理该数据库对象的语句,如drop table

-C | --create:是否包含create database语句

-n | --schema:只备份匹配的schema下的内容

-t | --table:只备份指定表

-T | --exclude-table=TABLE_NAME:指定不需要备份的表

--inserts:将备份数据转为insert格式,方便导入到其他数据库中。不使用该选项的话默认是使用copy的方式进行数据还原,速度会比insert快很多,所以如果是pgsql之间进行备份还原不建议使用该选项

--exclude-schema=SCHEMA_NAME:指定不需要备份的SCHEMA

--lock-wait-timeout=10s:备份时锁超时时间,避免备份期间有事务一直未执行完成导致备份卡住


2、pg_dump备份示例

#备份ywpie的数据为SQL格式然后进行还原,恢复数据前需要先创建好数据库
pg_dump -h 192.168.0.103 -U tanglu linuxe > linuxe.sql
psql -h 192.168.0.103  -U tanglu -d linuxe -f linxue.sql 


#只备份表数据
pg_dump -h 127.0.0.1 -U postgres -p 5432 -W testdb -a > testdb.sql

#只备份表结构
pg_dump -h 127.0.0.1 -U postgres -p 5432 -W testdb -s > testdb.sql

3、pg_dumpall备份示例

#备份所有数据库
pg_dumpall > sqlrestore/pg_all.sql

#只备份角色
pg_dumpall -r > /data/backup/pg_roles.sql

#只备份表空间
pg_dumpall -t > /data/backup/pg_tablespace.sql

4、pg_restore还原示例

-d:指定恢复备份文件到哪个schema中

pg_dump -h 192.168.0.103 -U tanglu -Fc ywpie > ywpie.dump  #-F指定格式为dump专有格式
pg_restore -h 192.168.0.103 -U tanglu -d ywpie  ywpie.dump  #还原数据到linuxe库中

文章评论

猜你喜欢

Oracle教程(8)Oracle 19C 单实例调整为 ADG 架构

MySQL | Oracle Oracle教程(8)Oracle 19C 单实例调整为 ADG 架构

一、ADG架构介绍Active Data Guard 简称ADG,是 Oracle Data Guard 架构下给物理备库(Physical Standby)追加的一个功能,非ADG模式下的物理备库只...

 Oracle教程(7)RMAN 物理备份教程与实战

MySQL | Oracle Oracle教程(7)RMAN 物理备份教程与实战

一、RMAN 介绍RMAN 是 Oracle 自带的物理备份工具,它的核心作用是保护数据库的物理完整性,确保在发生磁盘损坏、误删数据文件、服务器整体故障等灾难场景下能够将数据库恢复到某个可用的状态。R...

Oracle运维管理——修改用户密码过期时间

MySQL | Oracle Oracle运维管理——修改用户密码过期时间

在 Oracle 数据库中,用户的密码有效期通过PROFILE(资源限制配置文件)中的 PASSWORD_LIFE_TIME 参数控制。如果没有为用户单独创建 PROFILE,默认使用一个...

Oracle教程(6)SGA\PGA\REDO核心参数调优

MySQL | Oracle Oracle教程(6)SGA\PGA\REDO核心参数调优

一、Oracle核心参数介绍1、SGASGA(System Global Area)是 Oracle 实例启动时分配的共享内存区域,所有连接到该实例的会话都共用这块内存,是整个数据库实例对外提供服务的...

Oracle教程(5)数据泵逻辑备份教程与实战

MySQL | Oracle Oracle教程(5)数据泵逻辑备份教程与实战

一、数据泵介绍数据泵(Data Pump)是 Oracle 10g 开始引入的命令行逻辑备份与恢复工具。通过 expdp / impdp ,可以对所有数据库对象(模式、表数据、表空间等)进行高效导出和...