25.3 连续归档和时间点恢复(PITR)

PostgreSQL总是在pg_wal目录下维护着WAL(预写日志)日志。日志记录了数据库中的所有变化。这些日志是出去崩溃安全目的而存在的:如果数据库或系统崩溃,数据库可以在启动时重演日志中最后一个检查点之后的内容,以使数据库保持一致。WAL日志的存在,给了我们一个新的备份策略可能:结合文件系统级别备份和WAL文件拷贝。如果需要恢复,则可以先还原文件系统备份,然后重新WAL文件至数据库最新状态。虽然比较复杂,但是优点也很突出:

  • 无需完全一致的文件系统级别备份,即无需关闭数据库。

  • 因为可以无限重演WAL,这使得增量备份成为可能(通过归档WAL日志实现)。

  • 可使用基于时间点的恢复。可恢复到基础备份之后的任意时间点。

  • 可创建温备库。

25.3.1 设置WAL归档

若想启用WAL归档,则首先需要将wal_level级别设置至少为replica级别;archive_mode为on;并指定archive_command所使用的归档命令。

25.3.2 进行基础备份

进行基础备份最简单的方式是使用 pg_basebackup。需要保留从刚开始进行基础备份开始的所有WAL日志。

25.3.3 使用低级别API进行基础备份

使用低级别API进行基础备份比pg_basebackup多几个步骤,但也相对简单。这些步骤需要顺序进行,且需保证每个步骤的成功。低级别基础备份可以是排他或非排他的。建议使用非排他方式。慢慢会遗弃排他方式。

25.3.3.1 创建非排他低级别备份

该类型的备份可允许其他并行备份:

  1. 确认WAL归档已正常启用;

  2. 连接到数据库,并执行以下命令:select pg_start_backup('label',false,false);

  3. 使用文件系统级别进行备份;

  4. 然后在相同连接中执行:select * from pg_stop_backup(false,true);

  5. 一旦备份期间的WAL日志归档,则操作完成。

25.3.3.2 创建排他低级别备份

不建议使用。

25.3.3.3 备份数据目录

备份数据目录时,有些命令在备份变化文件时可能会有警告或报错,这个不要紧。如果使用了自定义表空间,要一起拷贝。

25.3.4 使用连续归档备份进行恢复

恢复步骤:

  1. 关闭数据库服务;

  2. 如果有条件,冷备数据库;

  3. 移除所有数据目录及自定义表空间文件;

  4. 从文件系统备份恢复数据文件;

  5. 删除pg_wal/下的文件;

  6. 如果在2步有未归档的WAL文件,则将其拷贝到新的路径中;

  7. 在postgresql.conf文件中设置恢复配置,并在数据目录中创建recovery.signal文件。

  8. 启动数据库服务;

  9. 检查数据。

25.3.5 时间线

用以标记恢复后的WAL记录。

25.3.6 提示与范例

给出配置连续归档的提示。

25.3.6.1 独立热备

可对PostgreSQL进行独立热备。有了基础备份之后,创建独立热备最便捷的方式是使用pg_basebackup。

25.3.6.2 压缩归档日志

可使用gzip对归档日志进行压缩:

archive_command = 'gzip < %p > /var/lib/pgsql/archive/%f'

那恢复的时候需要使用命令:

restore_command = 'gunzip < /mnt/server/archivedir/%f > %p'

25.3.6.3 archive_command脚本

可使用脚本定义archive_command的值:

archive_command = 'local_backup_script.sh "%p" "%f"'

25.3.7 注意事项

连续归档技术有几点限制:

  • 如果在进行基础备份是执行了CREATE DATABASE命令,会对恢复有影响;

  • CREATE TABLESPACE在WAL中记录的是绝对路径;

25.3. Continuous Archiving and Point-in-Time Recovery (PITR)相关推荐

  1. 以“升舱”之名,谈谈云原生数据仓库AnalyticDB的核心技术

    背景 说到升舱,我们首先想到的是飞机经济舱升级到商务舱.头等舱.阿里云企业级云原生数据仓库AnalyticDB(以下简称ADB)[1]在帮助以金融机构为主的行业数字化转型和传统数仓升级项目中,也引用了 ...

  2. 以“升舱”之名,谈谈云原生数据仓库 AnalyticDB 的核心技术

    背景 说到升舱,我们首先想到的是飞机经济舱升级到商务舱.头等舱.阿里云企业级云原生数据仓库AnalyticDB(以下简称ADB)[1]在帮助以金融机构为主的行业数字化转型和传统数仓升级项目中,也引用了 ...

  3. KDD_cup99 pytorch

    提示:这个数据集我是简单归一化处理的,只是为了简单跑下实验学习用的,你如果用于跑论文的实验什么的,这个不能用,处理的效果不好. 如果想看数据处理,可以参考kaggle上的代码:Intrusion De ...

  4. inx的c语言表达式,Spninx 解决的问题

    1.编译cmuclmtk http://www.cnblogs.com/libtool: line 479: CDPATH: command not found http://www.cnblogs. ...

  5. Sphinx武林秘籍(下)

    为什么80%的码农都做不了架构师?>>>    Sphinx武林秘籍(下) ――使用训练好的语言模型与声学模型 一.第一次使用 #cp -rf my_db.cd_cont_1000 ...

  6. 英语四级核心词,记住这些就够了

    决胜四级1800核心词 1不一样的可能性 possible   possibility   impossible   likely   unlikely   seem   seemingly   mi ...

  7. 连接服务器失败可能是oracle net,ora-28547:连接服务器失败,可能是 Oracle Net 管理失败...

    检查如下: 监听程序的配置文件 发现多了 (PROGRAM = extproc) 去掉后如下: # listener.ora Network Configuration File: C:\oracle ...

  8. Oracle为什么不需要double write?

    近期看到朋友圈转发了几篇关于MySQL innodb double write的文章:感觉都还不错.突然想到为什么Oracle没有这个东西?PostgreSQL是否也有类似机制? 在网上搜了一下,发现 ...

  9. 史上最强解读:Oracle里面为什么没有double write?

    导读:MySQL有double write机制,PostgreSQL有full page write机制,那么Oracle里面为什么没有类似机制呢? 近期看到朋友圈转发了几篇关于MySQL innod ...

最新文章

  1. 【怎样写代码】参数化类型 -- 泛型(四):泛型之类型参数约束
  2. 解决svn Authorization failed错误
  3. swift--添加新手引导页
  4. 麦肯锡发布《中国互联网公司崛起报告》
  5. jQuery dataTables 的使用
  6. Mysql当前模式让不记录日志_MySQL日志binlog的三种模式
  7. 【转】提高PHP性能的53个技巧
  8. C# SFTP上传文件
  9. 开机启动项_开机时出现“checking media presence”
  10. 【渝粤教育】国家开放大学2018年秋季 2312T旅行社经营管理 参考试题
  11. 数据结构——>数组模拟环形队列
  12. (简单控制) 关于使用NI max 的GPIB来控制安捷伦万用表34401A 的操作方法
  13. H263、H264和3GPP、MPEG4是什么关系
  14. 6D姿态估计算法汇总
  15. App通过QQ/微信登录绑定用户信息的一般流程
  16. 华为发布下一代智能产品战略及全新+AI系列新品!
  17. 无法定位程序输入点_invalid_parameter_noinfo_noreturn于动态链接库 MSVCR100.dll上
  18. [USACO06NOV]糟糕的一天Bad Hair Day
  19. 中学生学籍信息管理系统
  20. SECTION 1 python核心编程 快速入门

热门文章

  1. ORA-12514: TNS:listener does not currently know of service requested in connect descript
  2. 华为应用市场AGC研习社游戏课程上新,助力游戏开发者高效分发获量
  3. 从零开始学python的第14天
  4. ratel平头哥电脑感染app
  5. 【NOIP2014提高组】石头剪子布
  6. python中文社区-python
  7. C语言pta————查找书籍
  8. 利用ArcGIS创建注记层制作方法及注意事项
  9. HttpException: 503: Server Error for url:http://cic-1:9696/v2.0/security-groups, Service Unavailable
  10. Lamber表达式 List,Map,Set 互相转换