PostgreSQL 数据库备份与恢复

1 逻辑备份(单库)

postgres=#pg_dump --help
 
使用方法:
  pg_dump [选项]... [数据库名字]

一般选项:                
  -f, --file=FILENAME            输出文件或目录名
  -F, --format=c|d|t|p           输出文件格式 (c 自定义压缩格式输出, d 目录, tar,p 备份为文本明文(默认值),大库不推荐)
  -j, --jobs=NUM                 执行多个并行任务进行备份转储工作
  -v, --verbose                  详细模式
  -V, --version                  输出版本信息, 然后退出
  -Z, --compress=0-9   被压缩格式的压缩级别                                          
  --lock-wait-timeout=TIMEOUT    在等待表锁超时后操作失败
  --no-sync                      不用等待变化安全写入磁盘     
  -?, --help                     显示此帮助, 然后退出

-F c 备份为二进制格式,          压缩存储. 并且可被          pg_restore 用于精细还原
-F p 备份为文本, 大库不推荐

控制输出内容选项:
  -a, --data-only                只转储数据,不包括模式
  -b, --blobs                    在转储中包括大对象
  -B, --no-blobs                 排除转储中的大型对象
  -c, --clean                    在重新创建之前,先清除(删除)数据库对象
  -C, --create                   在转储中包括命令,以便创建数据库
  -e, --extension=PATTERN        仅转储指定的扩展名
  -E, --encoding=ENCODING        转储以    ENCODING 形式编码的数据
  -n, --schema=PATTERN           只转储指定的模式
  -N, --exclude-schema=PATTERN 不转储指定的模式
  -O, --no-owner                 在明文格式中, 忽略恢复对象所属者
  -s, --schema-only              只转储模式, 不包括数据
  -S, --superuser=NAME           在明文格式中使用指定的超级用户名
  -t, --table=PATTERN            只转储指定的表
  -T, --exclude-table=PATTERN    不转储指定的表
  -x, --no-privileges            不要转储权限(grant/revoke)
  --binary-upgrade               只能由升级工具使用
  --column-inserts               以带有列名的        INSERT 命令形式转储数据
  --disable-dollar-quoting       取消美元      (符号) 引号, 使用SQL  标准引号
  --disable-triggers             在只恢复数据的过程中禁用触发器
  --enable-row-security          启用行安全性(只转储用户能够访问的内容)
  --exclude-table-data=PATTERN 不转储指定的表中的数据
  --extra-float-digits=NUM       覆盖   extra_float_digits 的默认设置
  --if-exists                    当删除对象时使用IF EXISTS
  --include-foreign-data=PATTERN,包含外部服务器上与模式匹配的,外部表的数据
  --inserts                      以INSERT 命令,而不是COPY 命令的形式转储数据
  --load-via-partition-root      通过根表加载分区
  --no-comments                  不转储注释
  --no-publications              不转储发布
  --no-security-labels           不转储安全标签的分配
  --no-subscriptions             不转储订阅
  --no-table-access-method       do not dump table access methods
  --no-tablespaces               不转储表空间分配信息
  --no-toast-compression         不转储    TOAST 压缩方法
  --no-unlogged-table-data       不转储没有日志的表数据
  --on-conflict-do-nothing       将ON CONFLICT DO NOTHING 添加到INSERT 命令
  --quote-all-identifiers        所有标识符加引号,即使不是关键字
  --rows-per-insert=NROWS        每个插入的行数;意味着--inserts
  --section=SECTION 备份命名的节 (数据前, 数据, 及 数据后)           
  --serializable-deferrable 等到备份 可以无 异常运行
  --snapshot=SNAPSHOT            为转储使用给定的快照
  --strict-names                 要求每个表和(或)schema 包括模式以匹配至少一个实体
  --use-set-session-authorization,使用       SESSION AUTHORIZATION 命令代替,ALTER OWNER 命令来设置所有权

连接选项:
  -d, --dbname=DBNAME        对数据库      DBNAME 备份
  -h, --host=主机名             数据库服务器的主机名或套接字目录
  -p, --port=端口号 数据库服务器的端口号                                                
  -U, --username=名字 以指定的数据库用户联接             
  -w, --no-password          永远不提示输入口令
  -W, --password             强制口令提示        (自动)
  --role=ROLENAME            在转储前运行        SET ROLE

#案例

--导出指定库(不含create database语句)
pg_dump -h 连接串 -U 读写用户  库名> dbname.sql
pg_dump -h 192.168.1.51 -U zyb mydb > mydb-1.sql

--导出指定库(包含create database语句)
pg_dump -h 连接串 -U 读写用户 -C  库名 > dbname.sql
pg_dump -h 192.168.1.51 -U zyb -C mydb > mydb-2.sql

--仅导出指定库结构(不含create database语句)
pg_dump -h 连接串 -U 读写用户 -s  库名 > dbname.sql
pg_dump -h 192.168.1.51 -U zyb -s mydb > mydb -3.sql

--仅导出指定库结构(含create database语句)
pg_dump -h 192.168.1.51 -U postgres -C -s mydb > mydb-33.sql

--导出指定库,结果以二进制压缩格式输出
pg_dump -h 连接串 -U 读写用户 -F c -b -v  库名 > dbname.backup
pg_dump -h 192.168.1.51 -U zyb -F c -b -v mydb > mydb-4.dmp

--导出指定schema
pg_dump -h 连接串 -U 读写用户 -n schemaname 库名 > dbname.sql
pg_dump -h 192.168.1.51 -U zyb -n public mydb > mydb-5.sql

--导出指定库public和public2两个schema中的所有数据,结果以二进制压缩格式输出
pg_dump -h 连接串 -U 读写用户 -F c -b -v -n hr -n public 库名 > hr_payroll.backup
pg_dump -h 192.168.1.51 -U zyb -F c -b -v -n public -n public mydb > mydb-6.dmp

--导出指定库public schema以外的所有数据,结果以二进制压缩格式输出
pg_dump -h 连接串 -U 读写用户 -F c -b -v -N public 库名 > all_sch_except_pub.backup
pg_dump -h 192.168.1.51 -U zyb-F c -b -v -N public mydb > mydb-7.dmp

--导出特定的表
pg_dump -h 连接串 -U 读写用户 -t 表名 库名 > dbname.sql
pg_dump -h 192.168.1.51 -U zyb -t test mydb > mydb-8.sql

--导出某个db中所有以“itpux"开头的表
pg_dump -h 连接串 -U 读写用户 -t *.itpux*  库名 > dbname.sql
pg_dump -h 192.168.1.51 -U zyb -t *.itpux* mydb > mydb-9.sql

2 多库备份

#导出整个cluster
pg_dumpall -h 192.168.1.51 -U postgres -f bak_alldb1.sql

#仅备份角色和表空间定义
pg_dumpall -h 192.168.1.51 -U postgres --port=5432 -f bak_roles_tbs.sql --globals-only

#仅备份交色定义                        
pg_dumpall -h 192.168.1.51 -U postgres --port=5432 -f bak_roles.sql --roles-only

3 恢复

包含create database语句

psql -h 192.168.1.51 -U postgres  < mydb-2.sql

不含create database语句

postgres#create database mydb with owner zyb;

psql -h 192.168.1.51 -U postgres mydb < mydb-2.sql

4 copy 导入导出

#导出                                                 
COPY { table_name [ ( column_name [, ...]   ) ] | ( query ) }
     TO { 'filename' | PROGRAM 'command' | STDOUT }
     [ [ WITH ] ( option [, ...] ) ]

#导入
COPY table_name [ ( column_name [, ...] ) ]
     FROM { 'filename' | PROGRAM 'command | STDIN }
     [ [ WITH ] ( option [, ...] ) ]    

#案例

#把文本数据导入到表中
mydb=# \copy test from /backup/test _copy.txt ;

#表导出csv文件
mydb=#\copy test to /backup/test _copy.txt.csv with csv;

可以导出指定的列
COPY test (id, name) TO ' /backup/output.csv' WITH csv;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/82070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 LibreOffice 实现各种文档格式转换(支持任何开发语言调用 和 Linux + Windows 环境)[全网首发,保姆级教程,建议收藏]

以下能帮助你可以使用任何开发语言&#xff0c;在任何平台都能使用 LibreOffice 实现 Word、Excel、PPT 等文档的自动转换&#xff0c;目前展示在 ASP.NET Core 中为 PDF的实战案例&#xff0c;其他的文档格式转换逻辑同理。 &#x1f4e6; 1. 安装 LibreOffice &#x1f427;…

AWS stop/start 使实例存储lost + 注意点

先看一下官方的说明: EC2有一个特性,当执行stop/start操作(注意,这个并不是重启/reboot,而是先停止/stop,再启动/start)时,该EC2会迁移到其它的底层硬件上。 对于实例存储来说,由于实例存储是由其所在的底层硬件来提供的,此时相当于分配到了一块全新的空的磁盘。 但是从…

跨域问题详解

目录 一、什么是跨域问题&#xff1f; 二、跨域问题出现的原因 三、跨域的解决方案 四、结语 在 Web 开发的世界里&#xff0c;当我们尝试通过 AJAX 等技术获取不同源的资源时&#xff0c;常常会遇到 “跨域问题”。这不仅是前端开发者频繁遭遇的技术障碍&#xff0c;也是保…

VSCode 插件 GitLens 破解方法

文章目录 1. 安装指定版本2. 修改插件文件3. 重启 VSCode 1. 安装指定版本 在 VSCode 中打开扩展&#xff08;Ctrl Shift X&#xff09;&#xff0c;搜索 GitLens&#xff0c;右键点击 安装特定版本&#xff0c;在弹出的窗口中选择 17.0.2&#xff0c;然后等待安装完成。 2…

JavaScript的三大核心组成:ECMAScript、DOM与BOM

JavaScript的三大核心组成&#xff1a;ECMAScript、DOM与BOM 在前端开发领域&#xff0c;JavaScript是构建动态网页和交互式应用的核心语言。然而&#xff0c;许多人对JavaScript的组成缺乏清晰的认识。实际上&#xff0c;JavaScript并非单一的语言规范&#xff0c;而是由三个…

JC/T 2490-2019 石灰基单层装饰砂浆检测

石灰基单层装饰砂浆是指由石灰等无机胶凝材料、级配砂、外加剂或无机颜料制成的具有装饰功能的干粉饰面材料。 JC/T 2490-2019石灰基单层装饰砂浆检测项目&#xff1a; 测试项目 测试方法 外观 JC/T 2490 干密度 JC/T 2490 凝结时间 JGJ/T 70 抗折强度 GB/T 17671 抗…

用算法实现 用统计的方式实现 用自然语言处理的方法实现 用大模型实现 专利精益化统计分析

我们可以从算法、统计、自然语言处理&#xff08;NLP&#xff09;和大型语言模型&#xff08;LLM&#xff09;这四个方面&#xff0c;探讨如何实现对专利社区、作者重要性以及共同作者贡献度的分析。 1. 如何体现专利的社区 (社群效应) &#x1f916; 用算法实现 网络分析算法…

深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第五篇:多主仲裁与错误恢复

第五篇&#xff1a;多主仲裁与错误恢复 副标题 &#xff1a;从总线冲突到故障自愈——构建高可靠I2C系统的终极指南 1. 多主仲裁机制 1.1 仲裁原理与硬件实现 仲裁流程图解 &#xff1a; 仲裁失败处理 &#xff1a; 立即切换为从机模式 监测总线空闲后重试&#xff08;随机…

146. LRU Cache

题目描述 146. LRU Cache 哈希表双向链表 详见代码和注释&#xff1a; class LRUCache { private:int capacity_{0};int size_{0};struct Node{int key{0};int val{0};Node* pre{nullptr};Node* next{nullptr};Node(int k,int v,Node* pr,Node* nex):key(k),val(v),pre(pr),…

docker network 自定义网络配置与管理指南

Docker 自定义网络配置与管理指南 1. 网络基础概念 Docker 网络是容器间通信和与外部世界交互的基础。通过自定义网络&#xff0c;可以实现容器间的隔离、静态 IP 分配和服务发现。 关键术语&#xff1a; 子网(Subnet)&#xff1a;IP 地址的逻辑分组&#xff0c;例如 172.1…

linux strace调式定位系统问题

strace 的基本功能 strace 的主要功能包括&#xff1a; 跟踪系统调用&#xff1a;显示进程执行时调用的系统函数及其参数和返回值。监控信号&#xff1a;记录进程接收到的信号。性能分析&#xff1a;统计系统调用的执行时间和次数。调试支持&#xff1a;帮助定位程序崩溃、性…

告别手抖困扰:全方位健康护理指南

手抖&#xff0c;医学上称为震颤&#xff0c;是常见的身体症状&#xff0c;可能由多种原因引发&#xff0c;了解其成因并采取科学护理措施&#xff0c;对改善症状、维护健康至关重要。 生理性手抖往往因情绪激动、过度劳累、大量饮用咖啡或酒精等引起&#xff0c;这种手抖通常较…

华为2025年校招笔试真题手撕教程(一)

一、题目 输入&#xff1a; 第一行为记录的版本迭代关系个数N&#xff0c;范围是[1&#xff0c;100000]; 第二行到第N1行&#xff1a;每行包含两个字符串&#xff0c;第一个字符串为当前版本&#xff0c;第二个字符串为前序版本&#xff0c;用空格隔开。字符串包含字符个数为…

Qt 的多线程

Qt 中的多线程主要用于处理耗时操作&#xff0c;避免阻塞主线程&#xff08;UI 线程&#xff09;&#xff0c;从而提高程序的响应性和运行效率。以下是 Qt 多线程的相关技术总结&#xff1a; 常见的多线程实现方式 继承 QThread 类 &#xff1a;最基础的实现方式&#xff0c;具…

基于ITcpServer/IHttpServer框架的HTTP服务器

https://www.cnblogs.com/MuZhangyong/p/16839231.html 在基于ITcpServer/IHttpServer框架的HTTP服务器实现中,OnBody方法主要用于接收HTTP请求体数据,而触发HTTP响应通常是在OnMessageComplete方法中完成。以下是完整的响应触发机制说明: sequenceDiagramClient->>…

Windows 下 Qt 项目配置 FFmpeg 简明指南

一、作用 在qt项目中配置ffmpeg库 二、步骤 1、直接使用已经编译好的ffmpeg库文件&#xff0c;分为win32版本和win64版本&#xff1b; 2、win32版本下载地址&#xff1a;https://github.com/sudo-nautilus/FFmpeg-Builds-Win32/releases/tag/latest 3、win64版本下载地址&a…

Attu下载 Mac版与Win版

通过Git地址下载 Mac 版选择对于的架构进行安装 其中遇到了安装不成功&#xff0c;文件损坏等问题 一般是两种情况导致 1.安装版本不对 2.系统权限限制 https://www.cnblogs.com/similar/p/11280162.html打开terminal执行以下命令 sudo spctl --master-disable安装包Git下载地…

SpringBoot3集成Oauth2.1——5资源地址配置

配置问题说明 如下所示&#xff0c;代码配置了两个&#xff0c;过滤器&#xff0c;一个是资源保护&#xff0c;一个是不保护。 /** Description: 配置需要保护的资源* author: 胡涛* mail: hutao_2017aliyun.com* date: 2025年5月23日 下午2:28:20*/BeanOrder(2)public Securi…

Python urllib.parse 模块中的 urljoin 方法

Python urllib.parse 模块中的 urljoin 方法 urljoin 是 Python 标准库中 urllib.parse 模块的一个方法&#xff0c;用于将基础 URL 和相对路径拼接成完整的 URL。它会根据传入的基础 URL 自动处理协议、域名以及路径的部分匹配逻辑。 以下是关于该方法的具体说明和示例&…

AI大模型和SpringAI简介

一、Spring AI 简介 SpringAI整合了全球&#xff08;主要是国外&#xff09;的大多数大模型&#xff0c;而且对于大模型开发的三种技术架构都有比较好的封装和支持&#xff0c;开发起来非常方便。 不同的模型能够接收的输入类型、输出类型不一定相同。SpringAI根据模型的输入…