我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PostgreSQL数据库备份和还原(七)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PostgreSQL数据库备份和还原(七)

备份数据库三种方法:
SQL转储
文件系统级备份。
持续存档。

    1. SQL转储
      使用SQL命令生成一个文件。
      备份用法: pg_dump dbname>dumpfile

    pg_dump是一个常规的 PostgreSQL客户端应用程序.
    pg_dump不能以特殊权限运行,必须具有对要备份的所有表的读访问权限.
    pg_dump连接受普通客户端身份验证机制的约束。
    pg_dump 不转储有关角色或表空间的信息。

    恢复用法: psql dbname < dumpfile
    在执行psql恢复之前,需要先创建数据库。
    在还原SQL转储之前,所有拥有对象或被授予对转储数据库中对象的权限的用户必须已存在。

    恢复时遇到SQL错误后, 退出恢复:
    psql --set ON_ERROR_STOP=on dbname<dumpfile

    恢复备份后,在每个数据库上运行ANALYZE,以便查询优化器具有有用的统计信息。

  • 1.1 ANALYZE 分析
    ANALYZE收集有关数据库中表的内容的统计信息,
    select * from pg_statistic;
    ANALYZE [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ]
    参数:
    VERBOSE: 启用进度消息的显示。
    table_name : 要分析的特定表的名称。
    column_name : 要分析的特定列的名称。

  • 1.2 使用pg_dumpall
    pg_dumpall备份给定集群中的每个数据库,还保留集群范围的数据,如角色和表空间定义。
    用法: pg_dumpall> dumpfile
    恢复: psql -f dumpfilepostgres
    在恢复pg_dumpall转储时始终需要具有数据库超级用户访问权限,因为这需要恢复角色和表空间信息。
    使用pg_dumpall --globals-only选项单独转储群集范围的数据.

  • 1.3 处理大型数据库:
    使用压缩转储: pg_dump dbname| gzip> filename.gz
    恢复: gunzip -c filename.gz | PSQLdbname
    或者: cat filename.gz | gunzip | PSQLdbname

    使用split: 制作1兆字节的块: pg_dump dbname| split -b 1m - filename
    使用pg_dump的自定义转储格式: pg_dump -Fc dbname>filename
    自定义转储格式会在将数据写入输出文件时压缩数据.
    自定义格式转储,必须使用pg_restore进行恢复: pg_restore -d dbname filename

    使用pg_dump的并行转储功能:
    使用-j参数控制并行度。并行转储仅支持“目录”归档格式。
    pg_dump -j num-F d -fout.dir dbname
    使用pg_restore -j并行还原转储。这适用于“自定义”或“目录”归档模式的任何归档,无论是否已创建pg_dump -j.

    1. 文件系统级备份:
      直接复制PostgreSQL用于在数据库中存储数据的文件
      tar -cf backup.tar /services/install/postgresql10/data/

    必须关闭数据库服务器才能获得可用的备份,在恢复数据之前关闭服务器。
    文件系统备份仅适用于整个数据库集群的完整备份和还原。

    使用rsync 执行文件系统备份.需要关闭数据库服务。
    文件系统备份通常比SQL转储大,进行文件系统备份可能会更快。

    1. 连续存档和时间点恢复(PITR):
      postgresql在数据目录中维护一个预写日志pg_wal。
      日志记录对数据库的数据文件所做的每个更改。此日志主要用于崩溃安全目的:如果系统崩溃,可以通过“ 重放 ”将数据库恢复到一致性 自上一个检查点以来所做的日志条目。

    将文件系统级备份与WAL文件的备份相结合。
    恢复时,先恢复文件系统备份,然后从备份的WAL文件重放以使系统进入当前状态。
    优点:
    不需要完全一致的文件系统备份。备份中的不一致都将通过日志重放进行更正。
    只需继续存档WAL文件可实现连续备份。
    可在任何时候停止重放,并拥有当时数据库的一致快照,支持时间点恢复.

    注意:
    只支持恢复整个数据库集群。需要大量的归档存储,基本备份很大, 高可靠性的首选备份技术。
    连续归档(在线备份) 需要连续的归档WAL文件。

  • 3.1 设置WAL归档:
    系统将此序列物理划分为WAL 段文件,通常为16MB.
    段文件的数字名称反映了它们在抽象WAL序列中的位置.

    启用WAL归档:
    将wal_level配置参数设置为replica
    archive_mode设置为 on
    并指定要在archive_command 配置参数中使用的shell命令
    这些设置在postgresql.conf文件中。

    archive命令仅在已完成的WAL段上调用。
    限制未归档数据的使用时间: 设置archive_timeout 以强制服务器至少经常切换到新的WAL段文件。archive_timeout一分钟左右的设置通常是合理的。

    注意:
    WAL归档会恢复对PostgreSQL数据库中的数据所做的任何修改,但不会恢复对配置文件所做的更改。
    wal_level只能在服务器启动时更改。archive_command可以使用配置文件重新加载来更改。

  • 3.2 进行基本备份:
    使用pg_basebackup工具. 备份可以是文件或者tar归档。
    full_page_writes禁用时,备份运行时性能下降。full_page_writes在备份模式期间有效地强制执行备份。

    使用备份:
    需要保留在文件系统备份期间和之后生成的所有WAL段文件
    基本备份过程会创建一个备份历史记录文件,该文件立即存储在WAL归档区域中。此文件以文件系统备份所需的第一个WAL段文件命名。

  • 3.3 使用低级API进行基本备份
    低级基本备份可以以非独占或独占的方式进行。建议使用非独占方法。

    非独占低级备份是允许其他并发备份运行的备份:
    1.确保已启用WAL存档并正常工作。
    2.作为具有运行pg_start_backup的权限的用户连接到服务器:
    SELECT pg_start_backup('label',false,false);
    label 用来唯一标识此备份操作的任何字符串。
    false 默认情况下,pg_start_backup时间比较长,因为执行检查点,并且检查点所需的I / O将在很长一段时间内展开,默认情况下是检查点间隔的一半.可以最大限度地减少对查询处理的影响.
    false : 告诉pg_start_backup发起非排他性基础备份。

    3. SELECT * FROM pg_stop_backup(false,true);
        终止备份模式
  • 3.4 备份数据目录:
    pg_dynshmem/,pg_notify/,pg_serial/,pg_snapshots/,pg_stat_tmp/,和pg_subtrans/会在postmaster启动时进行初始化。
    从备份中省略pg_wal/,postmaster.pid和postmaster.opts,pg_replslot,pg_dynshmem/,pg_notify/,pg_serial/,pg_snapshots/,pg_stat_tmp/,和pg_subtrans等目录。
    pgsql_tmp可以从备份中省略任何以文件或目录开头的文件或目录。

    服务器停止时,无法使用pg_start_backup或pg_stop_backup。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PostgreSQL数据库备份和还原(七)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PostgreSQL 数据库备份与还原

PostgreSQL 数据库备份与还原目录备份还原栗子备份PostgreSQL提供的一个工具pg_dump,逻辑导出数据,生成sql文件或其他格式文件,pg_dump是一个客户端工具,可以远程或本地导出逻辑数据,恢复数据至导出时间点。Usage:pg_dump
PostgreSQL 数据库备份与还原
2015-11-20

mysql数据库备份和还原

备份MySQL数据库的命令mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表
2022-05-27

03 SQL2005数据库备份和还原

1、数据库备份的意义硬件故障或误操作2、数据库的恢复模式(数据库属性——选项——恢复模式)完整:可恢复到数据库故障时间点或指定时间点大容量日志:数据库日志不记录对数据修改的时间,效率高,通过日志只能恢复到故障时间点简单:事务日志,将不活跃的日志文件覆盖重复利用

	03 SQL2005数据库备份和还原
2019-04-18

Oracle备份、还原数据库

备份数据库创建备份目录(用sys账号),若已创建备份目录,此步可忽略create directory db_bak as "D: ECIMS_DB"--查看创建的目录select * from dba_directories--删除已创建的目录drop dir
2018-09-04

Postgresql数据-导出备份-导入还原

导出整个数据库 pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用户名)   >datadum.sql  导出某个表 pg_dump -h localhost -U postgres(用户名) 数据库名(缺省时同用
Postgresql数据-导出备份-导入还原
2021-05-17

mysql如何备份和还原数据库

MySQL数据库的备份和还原可以通过命令行或者图形界面工具来完成。备份数据库:使用命令行工具:可以使用mysqldump命令来备份数据库。例如,备份名为mydatabase的数据库可以使用以下命令:mysqldump -u usernam
mysql如何备份和还原数据库
2024-04-09

怎么备份和还原Cassandra数据库

备份和还原Cassandra数据库可以通过以下步骤实现:备份Cassandra数据库:使用nodetool命令创建备份:可以使用nodetool命令创建备份,例如使用以下命令创建备份:nodetool snapshot -t my_sn
怎么备份和还原Cassandra数据库
2024-03-11

达梦数据库备份还原

备份还原    1 物理备份与还原    21、脱机备份与还原(冷备)    21.1、console工具备份    21.2、console工具还原与恢复    31.3、dmrman工具备份    51.4、dmrman工具还原恢复    52、联机备份与

	达梦数据库备份还原
2016-11-14

Oracle数据库备份如何还原

这篇文章主要介绍了Oracle数据库备份如何还原,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。oracle 数据库提供expdp和impdp命令用于备份和恢复数据库。具体可查
2023-06-21

使用SQLyog备份还原数据库

1、点击“备份/导出”2、默认选中“包括CREATE DataBase语句”,这样的话,在目标服务器直接把这个sql文件导入后就可以和源数据库名一样的数据库,但是使用SQLyog不能修改数据库名导出的insert语句,是插入多条数据使用一条insert语句,这
使用SQLyog备份还原数据库
2021-04-11

编程热搜

目录