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. 240.搜索二维矩阵II

    从左下角位置开始搜索 时间复杂度:O(行数+列数). 想法有点像二分法,大了往一个方向找,小了往另一个方向找.由于矩阵横向和纵向都是递增,如果从(0,0)位置开始找,往右和往下都是增大,因此不知道实际 ...

  2. 基于JWT的Token身份验证

    ​ 身份验证,是指通过一定的手段,完成对用户身份的确认.为了及时的识别发送请求的用户身份,我们调研了常见的几种认证方式,cookie.session和token. 1.Cookie ​ cookie是 ...

  3. UltraSoft Scrum Meeting 博客汇总

    一.Alpha阶段 UltraSoft - Alpha - Scrum Meeting 1 UltraSoft - Alpha - Scrum Meeting 2 UltraSoft - Alpha ...

  4. BUAA软工-结对项目作业

    结对项目作业 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目作业 我在这个课程的目标是 通过这门课锻炼软件开发能力和经验,强化与他人合作 ...

  5. Spring父子上下文的使用案例

    Spring父子上下文的使用案例 一.背景 二.需求 三.实现步骤 1.基础代码编写 2.测试结果 四.小彩蛋 五.完整代码 一.背景 最近在看在使用Spring Cloud的时候发现,当我们通过Fe ...

  6. Noip模拟61 2021.9.25

    T1 交通 考场上想了一个$NPC$.应该吧,是要求出图里面的所有可行的不重复欧拉路 无数种做法都无法解出,时间也都耗在这个上面的,于是就考的挺惨的 以后要是觉得当前思路不可做,就试着换一换思路,千万 ...

  7. Machine learning (8-Neural Networks: Representation)

    1.Non-linear Hypotheses 2.Neurons and the Brain 从某种意义上来说,如果我们能找出大脑的学习算法,然后在计算机上执行大脑学习算法或与之相似的算法,也许这将 ...

  8. 我的一些JAVA基础见解

    这个学期学习JAVA基础课,虽说之前都自学过,但在学习时仍可以思考一些模糊不清的问题,可以更深一步的思考.在这里写下一些需要深入的知识点,对小白们也很友好~ 一.Java数据类型 1.基本数据类型 这 ...

  9. Luogu P2081 [NOI2012]迷失游乐园 | 期望 DP 基环树

    题目链接 基环树套路题.(然而各种错误调了好久233) 当$m=n-1$时,原图是一棵树. 先以任意点为根做$dp$,求出从每一个点出发,然后只往自己子树里走时路径的期望长度. 接着再把整棵树再扫一遍 ...

  10. DeWeb和WebXone的区别

    DeWeb和WebXone的区别 相同点: 1 两者为同一开发者研发.QQ:45300355,碧树西风 2 都是为了解决Delphi开发Web的问题 区别: 1 WebXone采用的ActiveX/N ...