首页 > 数据库 >PostgreSQL 使用pg_dump备份和恢复数据库

PostgreSQL 使用pg_dump备份和恢复数据库

时间:2024-10-09 17:24:53浏览次数:9  
标签:PostgreSQL dump 数据库 pg 格式 mydb 备份

PostgreSQL 使用 pg_dump 备份和恢复数据库

pg_dump 是 PostgreSQL 提供的用于备份数据库的工具,它可以将数据库内容导出为不同格式的文件,以便之后进行还原或迁移。下面是关于 pg_dumppg_restore 的详细使用说明。


一、pg_dump 基本语法

pg_dump [选项] -d <数据库名> -f <备份文件路径>

常用参数说明:

  • -U <用户名>:指定数据库用户名。
  • -h <主机名>:指定数据库主机地址,默认为 localhost
  • -p <端口号>:指定数据库端口,默认是 5432
  • -d <数据库名>:需要备份的数据库名称。
  • -F <格式>:指定备份文件的格式,常见格式如下:
    • c:自定义格式(推荐使用)。
    • t:TAR 格式。
    • p:纯文本格式。
  • -f <备份文件路径>:指定备份文件的保存路径。
  • -t <表名>:备份特定表。
  • -s:仅导出数据库的结构(schema)。

二、备份数据库的常见场景

  1. 备份整个数据库

    pg_dump -U <用户名> -h <主机名> -p <端口号> -d <数据库名> -F c -f <备份文件路径>
    
    • 该命令会将指定数据库备份为一个自定义格式的文件。
    • 示例:
      pg_dump -U postgres -h localhost -p 5432 -d mydb -F c -f /backup/mydb.dump
      
  2. 备份单个表

    pg_dump -U <用户名> -h <主机名> -p <端口号> -d <数据库名> -t <表名> -F c -f <备份文件路径>
    
    • 只备份特定的表。
    • 示例:
      pg_dump -U postgres -h localhost -p 5432 -d mydb -t mytable -F c -f /backup/mytable.dump
      
  3. 仅备份数据库结构(不包含数据)

    pg_dump -U <用户名> -h <主机名> -p <端口号> -d <数据库名> -s -F c -f <备份文件路径>
    
    • 只备份数据库的 schema,不包含实际数据。
    • 示例:
      pg_dump -U postgres -h localhost -p 5432 -d mydb -s -F c -f /backup/mydb_schema.dump
      
  4. 备份到纯文本格式

    pg_dump -U <用户名> -h <主机名> -p <端口号> -d <数据库名> -F p -f <备份文件路径>
    
    • 将数据库备份为纯文本格式,可以直接查看和编辑。
    • 示例:
      pg_dump -U postgres -h localhost -p 5432 -d mydb -F p -f /backup/mydb.sql
      

三、还原数据库

  1. 还原自定义格式或 TAR 格式的备份
    使用 pg_restore 恢复自定义格式或 TAR 格式的备份文件:

    pg_restore -U <用户名> -h <主机名> -p <端口号> -d <目标数据库名> -F c <备份文件路径>
    
    • 该命令会将备份文件中的数据恢复到指定数据库。
    • 示例:
      pg_restore -U postgres -h localhost -p 5432 -d mydb -F c /backup/mydb.dump
      
  2. 先删除数据库对象后恢复
    如果你需要在恢复前清空数据库中的对象,可以使用 -c 参数:

    pg_restore -U <用户名> -h <主机名> -p <端口号> -d <目标数据库名> -c -F c <备份文件路径>
    
    • -c:表示在恢复之前会先删除数据库中的已有对象。
    • 示例:
      pg_restore -U postgres -h localhost -p 5432 -d mydb -c -F c /backup/mydb.dump
      
  3. 从纯文本备份恢复
    对于纯文本格式的备份文件,直接使用 psql 命令恢复:

    psql -U <用户名> -h <主机名> -p <端口号> -d <目标数据库名> -f <备份文件路径>
    
    • 示例:
      psql -U postgres -h localhost -p 5432 -d mydb -f /backup/mydb.sql
      

四、常见问题

  1. 权限问题
    如果出现权限不足的问题,确保执行命令的用户对备份文件路径和 PostgreSQL 数据库拥有足够的权限。可以使用 sudo 提高权限:

    sudo -u postgres pg_dump ...
    
  2. 指定数据库角色
    在恢复数据库时,可以使用 -O 选项忽略创建对象时的所有者信息,并用当前登录用户作为对象所有者:

    pg_restore -U <用户名> -h <主机名> -p <端口号> -d <目标数据库名> -O -F c <备份文件路径>
    

五、总结

  • 使用 pg_dump 可以灵活地备份整个数据库、部分表或仅备份结构。
  • 使用 pg_restore 可轻松还原备份数据,特别是自定义格式和 TAR 格式的备份文件。
  • 备份格式推荐使用自定义格式(-F c),支持部分还原以及高效的数据恢复。

注意事项

有时候我们进行数据库迁移时,使用pgAdmin进行备份,当再次还原的时候,有可能会报错。其中一个原因就是我们使用的备份工具针对的是pg16版本,不支持当前版本等等。所以我们尽量使用同版本的工具进行备份,以新数据库版本为主

标签:PostgreSQL,dump,数据库,pg,格式,mydb,备份
From: https://www.cnblogs.com/echohye/p/18454715

相关文章

  • PostgreSQL E转义字符
    背景:多行数据作为select的where查询条件,数据库里直接找能找到,但select查询不到数据AAABBBCCCselectratmplidfromcertificateswhereprivka='AAABBBCCC';查询不到数据,修改如下selectratmplidfromcertificateswhereprivka=E'AAA\nBBB\nCCC\n';也可以借助......
  • pgadmin4敏感信息泄露 CVE-2024-9014
    0x01产品描述:        pgAdmin是全球最先进的开源数据库Postgres的领先开源管理工具。 pgAdmin4旨在满足新手和经验丰富的Postgres用户的需求,提供了强大的图形界面,可简化数据库对象的创建,维护和使用。其可以在Linux,Unix,macOS和Windows上使用,以管理PostgreSQL和EDBA......
  • 无线电通信卡:9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡
    一、概述     本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V690T-2FFG1761I作为主处理器,Xilinx 的Aritex XC7A200T作为辅助处理器。XC7A200T负责管理板卡的上电时......
  • 昱合昇|PGC1圆拱型(侧开上悬窗)天窗
    PGC1圆拱型(侧开上悬窗)天窗是新国标参考图集21J621-1《天窗》中比较典型的一款通风排烟设备,圆拱型的外观设计,视觉上更为美观、大方、整洁,在通风排烟效果上,因其大喉口的设计,排烟量更大,效果更好。一、设计要点PGC1圆拱型(侧开上悬窗)天窗选用拱形设计,整体线条流畅,造型优美,可以与建......
  • 【PostgreSQL】运维篇——PostgreSQL数据库的安全性措施
    数据库安全性是确保数据完整性、保密性和可用性的关键因素。PostgreSQL作为一个功能强大的开源关系数据库,提供了多种安全性措施,以保护数据免受未授权访问和潜在攻击。以下是对PostgreSQL数据库安全性措施的深入探讨,包括加密、审计、访问控制和网络安全。1.加密1.1数据库......
  • 【PostgreSQL】运维篇——定期备份与恢复策略
    在数据库管理中,定期备份是确保数据安全性和可恢复性的关键措施。制定一个有效的备份计划可以帮助您在发生数据丢失、损坏或其他灾难性事件时快速恢复数据。以下是制定定期备份计划的步骤,以及使用pg_dump和其他工具进行数据备份和恢复的详细介绍。1.备份计划的制定1.1确定......
  • PostgreSQL 创建主键自增表的 DDL
     PostgreSQL创建主键自增表的DDL --社区表DROPTABLEIFEXISTSpublic.t_community;CREATETABLEpublic.t_community(idbigserialNOTNULL,grid_idint8NULL,namevarchar(128)NOTNULL,descriptionvarchar(4096)NULL,create_time......
  • PG重建控制文件
    1.工具 a.pg10版本以前使用pg_resetxlog工具 b.pg10及以后版本pg_resetwal工具2.命令语法Usage:pg_resetwal[OPTION]...DATADIROptions:-c,--commit-timestamp-ids=XID,XIDsetoldestandnewesttransactionsbearing......
  • 【PostgreSQL】提高篇——如何创建和使用自定义函数和存储过程,包括 PL/pgSQL 语言的使
    数据库管理中,存储过程和自定义函数是非常重要的概念,尤其是在使用PostgreSQL这样的关系数据库管理系统时。它们允许开发者将复杂的业务逻辑封装在数据库中,从而提高应用程序的性能、可维护性和安全性。使用PL/pgSQL语言编写的存储过程和函数可以实现数据处理、事务控制和复......
  • postgresql僵尸进程的处理思路
    简介僵尸进程(zombieprocess)是指一个已经终止但仍然在进程表中保留条目的进程。正常情况下,当一个进程完成执行并退出时,操作系统会通过父进程调用的wait()或waitpid()系统调用来收集该子进程的退出状态。如果父进程未及时调用这些函数,子进程的状态信息就无法从内核中移除,导致进程在......