PostgreSQL 10.1 手册_部分 III. 服务器管理_第 25 章 备份和恢复_25.2. 文件系统级别备份

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 25.2. 文件系统级别备份 另外一种备份策略是直接复制PostgreSQL用于存储数据库中数据的文件,第 18.2 节解释了这些文件的位置。你可以采用任何你喜欢的方式进行文件系统备份,例如: tar -cf backup.tar /usr/local/pgsql/data 但是这种方法有两个限制,使得这种方法不实用,或者说至少比pg_dump方法差: 为了得到一个可用的备份,数据库服务器必须被关闭。

25.2. 文件系统级别备份

另外一种备份策略是直接复制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不需要转储索引的内容,而是转储用于重建索引的命令)。但是,做一次文件系统备份可能更快。

本文转自PostgreSQL中文社区,原文链接:25.2. 文件系统级别备份

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的服务器日志文件
本文介绍了PostgreSQL数据库的物理存储结构,重点讨论了服务器日志文件。通过`pg_ctl`命令启动PostgreSQL实例时,使用`-l`参数指定日志文件位置,记录数据库启动、运行及关闭过程中的关键信息。附有相关视频讲解和日志文件示例。
|
11天前
|
存储 数据挖掘
服务器数据恢复—zfs文件系统服务器数据恢复案例
一台配有32块硬盘的服务器在运行过程中突然崩溃不可用。经过初步检测,基本上确定服务器硬件不存在物理故障。管理员重启服务器后问题依旧。需要恢复该服务器中的数据。
|
2月前
|
数据挖掘 Linux 数据库
服务器数据恢复—reiserfs文件系统数据恢复案例
服务器数据恢复环境: 一台服务器中有一组由4块SAS硬盘组建的RAID5阵列,上层安装linux操作系统统。分区结构:boot分区+LVM卷+swap分区(按照顺序),LVM卷中划分了一个reiserfs文件系统作为根分区。 服务器故障: 服务器操作系统在运行过程中由于未知原因崩溃,管理员重装操作系统后发现分区结构变为:boot分区+swap分区+LVM卷(按照顺序),LVM卷中文件系统位置有个空的reiserfs超级块。 用户方需要恢复reiserfs文件系统中所有数据,包含数据库、网站程序与网页、OA系统中所有办公文档。
服务器数据恢复—reiserfs文件系统数据恢复案例
|
25天前
|
存储 数据挖掘
服务器数据恢复—ZFS文件系统下数据恢复案例
服务器存储数据恢复环境: ZFS Storage 7320存储阵列中有32块硬盘。32块硬盘分为4组,每组8块硬盘,共组建了3组RAIDZ,每组raid都配置了热备盘。 服务器存储故障: 服务器存储运行过程中突然崩溃,排除人为误操作、断电、进水和其他机房不稳定因素。管理员重启服务器存储,系统无法进入,需要恢复服务器存储中的数据。
|
2月前
|
存储 Linux
服务器数据恢复——使用fsck后Ext4文件系统挂载不上的数据恢复案例
关于Ext4文件系统的几个概念: 块组:Ext4文件系统的全部空间被划分为若干个块组,每个块组结构基本上相同。 块组描述符表:每个块组都对应一个块组描述符,这些块组描述符统一放在文件系统的前部,称为块组描述符表。每个块组描述符大小为32字节,主要描述块位图、i-节点位图及i-节点表的地址等信息。 超级块(Superblock):用于存储文件系统的配置参数(块大小、总块数、i-节点数等)和动态信息(当前空闲块数和i-节点数)。Ext4文件系统的超级块始于1024字节处,即2号扇区。 i节点:描述文件的时间、大小、块指针等信息。
|
2月前
|
存储 运维 Oracle
服务器数据恢复—raid5阵列+vxfs文件系统数据恢复案例
服务器存储数据恢复环境: 某品牌MSA2000FC存储中有一组由7块盘组建的RAID5阵列,另外还有1块硬盘作为热备盘使用。 基于RAID5阵列划分的几个LUN分配给小机使用,存储空间通过LVM管理,重要数据为Oracle数据库及OA服务端。 服务器存储故障: RAID5阵列中2块硬盘离线,唯一的热备盘成功激活,RAID5阵列还是变得不可用,上层LUN无法使用。
|
3月前
|
算法 数据挖掘 Linux
服务器数据恢复—EXT3文件系统下邮件数据恢复案例
服务器数据恢复环境: 邮件服务器中有一组由8块盘组成的RAID5阵列, 上层是Linux操作系统+EXT3文件系统。 服务器故障: 由于误删除导致文件系统中的邮件数据丢失。
|
3月前
|
存储 Unix 数据挖掘
服务器数据恢复—SAN LUN映射出错导致文件系统共享冲突的数据恢复案例
服务器数据恢复环境: SAN光纤网络环境,存储由一组6块硬盘组建的RAID6阵列构成,划分为若干LUN,MAP到跑不同业务的SUN SOLARIS操作系统服务器上。 服务器故障&分析: 因为业务需要,用户在该光纤存储环境中新增一台SUN SOLARIS操作系统服务器。将存储中的某个LUN映射到新增的服务器上,但是映射的这个卷之前已经MAP到SOLARIS生产系统上的某个LUN上了。因为未及时察觉这个问题,新增服务器已经对该LUN进行部分初始化操作。 在SOLARIS操作系统层面磁盘报错,重启后卷无法挂载。联系SUN工程师检测后,执行了fsck操作。操作完成后虽然文件系统可以挂上,但是发现大量
|
3月前
|
存储 数据挖掘 Linux
服务器数据恢复—ext4文件系统服务器数据恢复案例
服务器数据恢复环境: 某品牌服务器+同品牌存储,Linux centos7+EXT4文件系统。 服务器故障: 意外断电导致服务器操作系统不能正常启动。经过修复后系统可以正常启动,但是挂载的分区无法正常访问。使用fsck修复这个问题分区,虽然修复完成之后文件系统正常,但是发现部分文件丢失,查看后发现缺失的部分文件在lost+found文件夹里,文件名已经发生改变。
|
3月前
|
存储 Oracle 关系型数据库
服务器数据恢复—V7000存储NTFS文件系统分区数据恢复案例
服务器存储数据恢复环境: 一台挂载在Windows server服务器上的v7000存储。存储空间划分了一个分区,采用NTFS文件系统,存放oracle数据库。 服务器存储故障: 服务器在运行过程中宕机,于是管理员重启服务器。服务器进入系统自动进行磁盘扫描修复时,管理员强制关机并断开了存储和服务器之间的连接,导致这台存储上的文件系统损坏,报错“文件或目录损坏且无法读取”。