您的位置:58编程 > PostgreSQL 文件系统级别备份

PostgreSQL 文件系统级别备份

2023-05-26 07:33

 PostgreSQL 文件系统级别备份

另外一种备份策略是直接复制PostgreSQL用于存储数据库中数据的文件,第 18.2 节解释了这些文件的位置。你可以采用任何你喜欢的方式进行文件系统备份,例如:

tar -cf backup.tar /usr/local/pgsql/data

但是这种方法有两个限制,使得这种方法不实用,或者说至少比pg_dump方法差:

  1. 为了得到一个可用的备份,数据库服务器必须被关闭。例如阻止所有连接的半路措施是不起作用的(部分原因是tar和类似工具无法得到文件系统状态的一个原子的快照,还有服务器内部缓冲的原因)。关于停止服务器的信息可以在第 18.5 节中找到。不用说,在恢复数据之前你也需要关闭服务器。

  2. 如果你已经深入地了解了数据库的文件系统布局的细节,你可能会有兴趣尝试通过相应的文件或目录来备份或恢复特定的表或数据库。这种方法也不会起作用,因为包含在这些文件中的信息只有配合提交日志文件(pg_xact/*)才有用,提交日志文件包含了所有事务的提交状态。一个表文件只有和这些信息一起才有用。当然也不可能只恢复一个表及相关的pg_xact数据,因为这会导致数据库集簇中所有其他表变得无用。因此文件系统备份值适合于完整地备份或恢复整个数据库集簇。

另一种文件系统备份方法是创建一个数据目录的一致快照,如果文件系统支持此功能(并且你相信它的实现正确)。典型的过程是创建一个包含数据库的卷的冻结快照,然后从该快照复制整个数据目录(如上,不能是部分复制)到备份设备,最后释放冻结快照。即使在数据库服务器运行时,这种方式也有效。但是,以这种方式创建的备份保存的文件看起来就像数据库没有被正确关闭时的状态。因此,当你从备份数据上启动数据库服务器时,它会认为上一次的服务器实例崩溃了并尝试重放WAL日志。这不是问题,只是需要注意(当然WAL文件必须要包括在备份中)。你可以在拍摄快照之前执行一次 CHECKPOINT以便节省恢复时间。

如果你的数据库跨越多个文件系统,可能没有任何方式可以对所有卷获得完全同步的冻结快照。例如,如果你的数据文件和WAL日志放置在不同的磁盘上,或者表空间在不同的文件系统中,可能没有办法使用快照备份,因为快照必须是同步的。在这些情况下,一定要仔细阅读你的文件系统文档以了解其对一致快照技术的支持。

如果没有可能获得同步快照,一种选择是将数据库服务器关闭足够长的时间以建立所有的冻结快照。另一种选择是执行一次连续归档基础备份(第 25.3.2 节),因为这种备份对于备份期间发生的文件系统改变是免疫的。这要求在备份过程中允许连续归档,恢复时使用连续归档恢复(第 25.3.4 节)。

还有一种选择是使用rsync来执行一次文件系统备份。其做法是先在数据库服务器运行时执行rsync,然后关闭数据库服务器足够长时间来做一次rsync --checksum--checksum是必需的,因为rsync的文件修改 时间粒度只能精确到秒)。第二次rsync会比第一次快,因为它只需要传送相对很少的数据,由于服务器是停止的,所以最终结果将是一致的。这种方法允许在最小停机时间内执行一次文件系统备份。

注意一个文件系统备份通常会比一个SQL转储体积更大(例如pg_dump不需要转储索引的内容,而是转储用于重建索引的命令)。但是,做一次文件系统备份可能更快。


阅读全文
以上是58编程为你收集整理的 PostgreSQL 文件系统级别备份全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL WAL配置

    PostgreSQL WAL配置

    有几个WAL相关的配置参数会影响数据库性能。本节将解释它们的使用。关于服务器配置参数的设置的一般信息请参考第19章。 检查点是...

  •  PostgreSQL SSL 支持

    PostgreSQL SSL 支持

    33.18.1. 服务器证书的客户端验证33.18.2. 客户端证书33.18.3. 不同模式中提供的保护33.18.4. SSL 客户端文件使用33.18.5. SSL ...

  •  PostgreSQL GET DESCRIPTOR

    PostgreSQL GET DESCRIPTOR

    GET DESCRIPTOR — 从一个 SQL 描述符区域得到信息大纲GET DESCRIPTOR descriptor_name :cvariable = descriptor_header_item [,...

  • html style属性 HTML DOM Style alignItems 属性

    html style属性 HTML DOM Style alignItems 属性

    Style alignItems 属性 Style 对象实例居中对齐灵活的 div 元素的各项:document.getElementById("myDIV").style.alignItems="ce...

  • html border style HTML DOM Style borderImageRepeat 属性

    html border style HTML DOM Style borderImageRepeat 属性

    Style borderImageRepeat 属性 Style 对象实例规定如何重复图像边框:document.getElementById(myDIV).style.borderImageRepeat=...

  •  HTML DOM Style flexBasis 属性

    HTML DOM Style flexBasis 属性

    Style flexBasis 属性 Style 对象实例设置一个灵活项目的初始长度为 200 像素:document.getElementById(myBlueDiv).style.flexB...

  •  OceanBase CREATE INDEX

    OceanBase CREATE INDEX

    描述该语句用来创建索引。索引是创建在表上的,对数据库表中一列或多列的值进行排序的一种结构。其作用主要在于提高查询的速度,...

  •  OceanBase ALTER TABLE

    OceanBase ALTER TABLE

    描述该语句用来修改已存在的表的结构,比如:修改表及表属性、新增列、修改列及属性、删除列等。格式alter_table_stmt:ALTER TAB...

  •  OceanBase LAST_DAY

    OceanBase LAST_DAY

    ​LAST_DAY​函数返回日期date所在月份的最后一天的日期。语法LAST_DAY (date)参数参数说明date所有包含日期信息的数据类型(DAT...

  •  OceanBase COUNT

    OceanBase COUNT

    COUNT函数用于查询expr的行数。语法COUNT({ * | [ DISTINCT | UNIQUE | ALL ] expr }) [ OVER (analytic_clause) ]作为分析函数...

© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS