PostgreSQL 数据库备份与还原

目录

备份

PostgreSQL提供的一个工具pg_dump,逻辑导出数据,生成sql文件或其他格式文件,pg_dump是一个客户端工具,可以远程或本地导出逻辑数据,恢复数据至导出时间点。

  • Usage:

    pg_dump [option]... [dbname]

    note:

    dbname 如果没有提供数据库名字, 那么使用 PGDATABASE 环境变量的数值.

  • Options

    • General options:(一般选项)

      -f, --file=FILENAME          输出文件或目录名
      -F, --format=c|d|t|p 输出文件格式 (定制, 目录, tar) 明文 (默认值))
      -j, --jobs=NUM 执行多个并行任务进行备份转储工作
      -v, --verbose 详细模式
      -V, --version 输出版本信息,然后退出
      -Z, --compress=0-9 被压缩格式的压缩级别
      --lock-wait-timeout=TIMEOUT 在等待表锁超时后操作失败
      -?, --help 显示此帮助, 然后退出
    • Options controlling the output content:(控制输出内容选项:)

      -a, --data-only              只转储数据,不包括模式
      -b, --blobs 在转储中包括大对象
      -c, --clean 在重新创建之前,先清除(删除)数据库对象
      -C, --create 在转储中包括命令,以便创建数据库
      -E, --encoding=ENCODING 转储以ENCODING形式编码的数据
      -n, --schema=SCHEMA 只转储指定名称的模式
      -N, --exclude-schema=SCHEMA 不转储已命名的模式
      -o, --oids 在转储中包括 OID
      -O, --no-owner 在明文格式中, 忽略恢复对象所属者 -s, --schema-only 只转储模式, 不包括数据
      -S, --superuser=NAME 在明文格式中使用指定的超级用户名
      -t, --table=TABLE 只转储指定名称的表
      -T, --exclude-table=TABLE 不转储指定名称的表
      -x, --no-privileges 不要转储权限 (grant/revoke)
      --binary-upgrade 只能由升级工具使用
      --column-inserts 以带有列名的INSERT命令形式转储数据
      --disable-dollar-quoting 取消美元 (符号) 引号, 使用 SQL 标准引号
      --disable-triggers 在只恢复数据的过程中禁用触发器
      --enable-row-security 启用行安全性(只转储用户能够访问的内容)
      --exclude-table-data=TABLE 不转储指定名称的表中的数据
      --if-exists 当删除对象时使用IF EXISTS
      --inserts 以INSERT命令,而不是COPY命令的形式转储数据
      --no-security-labels 不转储安全标签的分配
      --no-synchronized-snapshots 在并行工作集中不使用同步快照
      --no-tablespaces 不转储表空间分配信息
      --no-unlogged-table-data 不转储没有日志的表数据
      --quote-all-identifiers 所有标识符加引号,即使不是关键字
      --section=SECTION 备份命名的节 (数据前, 数据, 及 数据后)
      --serializable-deferrable 等到备份可以无异常运行
      --snapshot=SNAPSHOT 为转储使用给定的快照
      --strict-names 要求每个表和/或schema包括模式以匹配至少一个实体
      --use-set-session-authorization
      使用 SESSION AUTHORIZATION 命令代替
      ALTER OWNER 命令来设置所有权
    • Connection options:(联接选项:)

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

    • PG_DUMP 中文文档

还原

栗子

  • 备份数据库

  • 还原数据库

  • 基础参数

    Option Value
    -h --host=HOSTNAME 数据库服务器IP或主机名
    -p --port=PORT 数据库端口号
    -U --username=NAME 用户名
    -d --dbname=DBNAME 数据库名
    -f --file=FILENAME 指定导出文件名(也可以使用< >
    -v --verbose 详细模式(打印操作过程)
  • 常用参数

    Option Value
    -F --format=c|d|t|p 输出文件格式 (定制, 目录, tar, 明文 (默认值))
    -c --clean 在重新创建之前,先清除(删除)数据库对象
    -C --create 在转储中包括创库命令,以便创建数据库
    -E --encoding=ENCODING 转储以ENCODING形式编码的数据
    -n --schema=SCHEMA 只转储指定名称的模式
    -N --exclude-schema=SCHEMA 不转储指定名称的模式
    -t --table=TABLE 只转储指定名称的表
    -T --exclude-table=TABLE 不转储指定名称的表
    -s --schema-only 只转储模式, 不包括数据(不导出数据)
    -Z --compress=0-9 指定压缩格式的压缩级别(0-9)

note:

  • 操作远程数据库时必须加上 -h -p 参数;
  • 还原时,不指定数据库默认还原到 postgres 库(环境变量中的PGDATABASE);
  • --if-exists 当删除对象时使用IF EXISTS(配合 -c 参数使用)
  • -c 删除原数据库对象(备份文件中有删除原库的SQL)
  • -C 创建数据库(备份文件中有创建原库名的新数据库的SQL)
    • -c 参数: 还原过程中会先删除原数据库;
    • 使用 -C 参数时,创建数据库并备份所有模式。还原时无需指定数据库,自动创建原库的同名库,并把所有模式还原其中;
    • 不使用 -C 参数时,只备份所有模式。还原时需要指定数据库;* -C 在转储中创建数据库的命令,还原时无需在导入之前先建数据库;

备份数据库

  • 常用备份

    pg_dump [-h host -p 5432] -U username [-c -C] -d db_name -f db_backup.sql [-v]

    pg_dump [-h host -p 5432] -U username [-c -C] -d db_name > db_backup.sql [-v]

  • 备份归档格式 -F c|d|t|p(默认为p)

    pg_dump [-h host -p 5432] -U username [-c -C] -F c -d db_name -f db_backup.sql [-v]

  • 备份使用指定压缩级别 -Z 0-9

    pg_dump [-h host -p 5432] -U username -F c -d db_name -f db_backup.sql [-v]

    note:

    • 0 不压缩, 1-9 压缩级别;
    • -Fc 对于自定义归档格式,这会指定个体表数据段的压缩,并且默认是进行中等级别的压缩;
    • -Fp 对于纯文本输出,设置一个非零压缩级别会导致整个输出文件被压缩,就好像它被gzip处理过一样,但是默认是不压缩;
    • -Ft tar 归档格式当前完全不支持压缩;
  • 备份指定模式(schema) -n -N

    pg_dump [-h host -p 5432] -U username -d db_name -n schema_name [-n schema_name2]... -f db_schema.sql [-v]

    pg_dump [-h host -p 5432] -U username [-c -C] -d db_name -N schema_name [-N schema_name2]... -f db_exclude-schema.sql [-v]

  • 备份指定对象(table, view, etc) -t -T

    pg_dump [-h host -p 5432] -U username -d db_name [-n schema_name] -t tb_name [-t tb_name2]... -f db_table.sql [-v]

    pg_dump [-h host -p 5432] -U username -d db_name [-n schema_name] -T tb_name [-T tb_name2]... -f db_exclude-table.sql [-v]

    note: 导出表 username 为 表的所有者

  • 只备份模式(只备份所有模式,不备份数据) -s

    pg_dump [-h host -p 5432] -U username [-c -C] -d db_name -s -f db_only_schema_backup.sql [-v]

还原数据库

  • 还原

    psql [-h host -p 5432] -U username -d db_name -f db_backup.sql

    psql [-h host -p 5432] -U username -d db_name < db_backup.sql

  • 恢复

    pg_restore [-h host -p 5432] -U username -d db_name -f db_backup.tar

    note:

    • 错误日志: pg_restore: [archiver] input file appears to be a text format dump. Please use psql.
    • pg_resotre仅支持Fc/Ft格式的导出文件,Fp格式的文件是sql脚本,需要使用psql工具导入脚本数据
  • 修改所有表 OWNER(postgres用户 除外)

    REASSIGN OWNED BY old_role [, ...] TO new_role

Reference

PostgreSQL 数据库备份与还原的更多相关文章

  1. windows下postgresql数据库备份和还原

    1.通过cmd进入数据库的bin目录 cd C:\Program Files\PostgreSQL\9.6\bin 2.执行pg_dump备份命令,localhost 或者IP pg_dump -h ...

  2. C#.NET SQL数据库备份与还原解决方案

    C#.NET SQL数据库备份与还原解决方案http://www.csframework.com/archive/1/arc-1-20110924-1841.htm 开发框架V2.2(快速开发版)系统 ...

  3. 【C#】数据库备份及还原的实现代码【转载】

    [转载]http://www.codesky.net/article/200908/128600.html C#数据库备份及还原1.在用户的配置时,我们需要列出当前局域网内所有的数据库服务器,并且要列 ...

  4. Mysql数据库备份和还原常用的命令

    Mysql数据库备份和还原常用的命令是进行Mysql数据库备份和还原的关键,没有命令,什么都无从做起,更谈不上什么备份还原,只有给系统这个命令,让它去执行,才能完成Mysql数据库备份和还原的操作,下 ...

  5. [转]MySQL数据库备份和还原的常用命令小结

    MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword datab ...

  6. SQL Server 2008数据库备份和还原(还原是必须有完整备份)

    转自lwccc, SQLserver2008数据库备份和还原问题(还原是必须有完整备份) 首先,我要说明的是你必须拥有完整的数据库备份,下面的还原教程,才算有用. 这个连接是某高手的异常恢复方法, 实 ...

  7. PCB MongoDB数据库 备份与还原

    一. MongoDB数据库 备份与还原工具介绍: 数据备份工具  mongodump.exe 数据还原工具   mongorestore.exe 二. MongoDB数据库备份 mongodump - ...

  8. 批处理(bat)实现SQLServer数据库备份与还原

    原文:批处理(bat)实现SQLServer数据库备份与还原 备份数据库.bat @echo off set path=%path%;C:\Program Files (x86)\Microsoft ...

  9. 【RAC】rac环境下的数据库备份与还原

    [RAC]rac环境下的数据库备份与还原 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ ...

随机推荐

  1. ThreadLocal部分源码分析

    结构演进 早起JDK版本中,ThreadLocal内部结构是一个Map,线程为key,线程在"线程本地变量"中绑定的值为Value.每一个ThreadLocal实例拥有一个Map实 ...

  2. 【二食堂】Alpha - Scrum Meeting 3

    Scrum Meeting 3 例会时间:4.13 12:00 - 12:30 进度情况 组员 昨日进度 今日任务 李健 1. 继续学习前端知识,寻找一些可用的框架.issue 1. 搭建主页html ...

  3. stm32学习笔记之GPIO功能框图分析

    GPIO 是通用输入输出端口的简称,简单来说就是STM32 可控制的引脚,STM32 芯片的GPIO 引脚与外部设备连接起来,从而实现与外部通讯.控制以及数据采集的功能.STM32 芯片的GPIO被分 ...

  4. 有了 HTTP 协议,为什么还需要 Websocket?

    WebSocket 是一种基于 TCP 连接上进行全双工通信的协议,相对于 HTTP 这种非持久的协议来说,WebSocket 是一个持久化网络通信的协议. 它不仅可以实现客户端请求服务器,同时可以允 ...

  5. 在Vue前端界面中,几种数据表格的展示处理,以及表格编辑录入处理操作。

    在Vue前端项目中,我这里主要是基于Vue+Element的开发,大多数情况下,我们利用Element的表格组件就可以满足大多数情况的要求,本篇随笔针对表格的展示和编辑处理,综合性的介绍几款表格组件的 ...

  6. netty系列之:搭建客户端使用http1.1的方式连接http2服务器

    目录 简介 使用http1.1的方式处理http2 处理TLS连接 处理h2c消息 发送消息 总结 简介 对于http2协议来说,它的底层跟http1.1是完全不同的,但是为了兼容http1.1协议, ...

  7. Dubbo框架协议总结

    Dubbo支持的各种协议及相关特性及应用场景,均可在官网文档中找到. 支持的协议有dubbo.rmi.hession.http.webservice.thrift.memcached.redis.re ...

  8. Java第三天【变量、常量、数据类型】

    学习Java第三天!加油!请帖友看看有和不足的地方,和在下说一下,谢谢! 变量 变量(variable): 1.变量的本质就是代表"可操作的存储空间",空间位置是确定的,蛋里面放置 ...

  9. elementUI合并表格span-method用法

    官方文档 参考链接一 参考链接二

  10. java 雪花算法实现获取分布式id

    import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.NetworkI ...