zoukankan      html  css  js  c++  java
  • postgres 基础备份-->pg_start_ backup与pg_stop_ backup (一)

    一,备份须知

      备份前要保证开启了归档

      关于pg_start_ backup(摘:https://blog.csdn.net/pg_hgdb/article/details/78505641)  

     pg_start_backup() 和 pg_stop_backup()是postgreSQL提供的一种备份方式,由于无法并行备份,现在已经逐渐被pg_basebackup工具(postgresql9.1之后)所替代。
    今天主要说一下,这两个命令做了什么工作。 pg_start_backup()
    1、强制发生一次checkpoint点。 将未写到磁盘上的脏数据全部刷到磁盘上去。这样从这之后产生的日志就是记录整个数据块。可以“确保”恢复的正确性。 2、置写日志标志为:XLogCtl->Insert.forcePageWrites = true,这样wal日志将会记录整个数据块。避免了在进行备份时候(读操作——旧数据)持续向数据库写入数据(
    写操作——新数据)造成的前后数据不一致。 细心的读者会发现我将“确保”恢复的正确性带上了引号,这是为什么呢? 想要知道为什么不能真正确保数据恢复正确性,首先应该了解,pg_start_backup()开启期间(不执行pg_stop_backup()),wal日志仍然会进行循环使用。从我们使用者的角度来看也许数据
    库应该是持续的将数据块变化记录到wal中,备份不停止,wal日志也不应该被覆盖,但事实上并不是如此,也许是postgreSQL为了不至于太复杂和为了避免撑爆xlog日志,pg_start_backup()
    开启期间wal仍会进行覆盖循环使用。 我们知道pg_start_backup() 和 pg_stop_backup()的使用是不需要开启归档的(强烈建议开启),那么在进行备份的时候,应该进行归档的一部分日志就会无法保存直接被覆盖掉,如果再想
    恢复到“归档日志之后”的时间段数据也就会发生丢失。 所以说,对于归档日志,在存储允许的情况下,请务必使用! pg_stop_backup()相对而言就简单多了,它的作用就是结束此次备份状态,以便进行下次备份(非并发性备份),一直不执行pg_stop_backup()也并不会撑爆xlog目录,但是是无法执行下次
    备份的。

    二,开始备份

      01,执行pg_start_backup

    postgres=# select pg_start_backup('labe_1',false,false);
     pg_start_backup
    -----------------
     1/F8000060
    (1 row)
    
    postgres=# q

       02,手工物理拷贝数据目录与元数据目录

    [postgres@kafka01 data]$ ls
    archive  backup  kingle_tbs  pgdata  postgres  psql[postgres@kafka01 data]$ tar cvf 20200608postgre.tar.gz ./kingle_tbs/ ./pgdata/ --exclude=./pgdata/postmaster.pid --exclude=./pgdata/postmaster.opts 
    --exclude=./pgdata/log/*
    ./kingle_tbs/ ./kingle_tbs/PG_10_201707211/ ./kingle_tbs/PG_10_201707211/16387/ ./kingle_tbs/PG_10_201707211/16387/1255 ./kingle_tbs/PG_10_201707211/16387/1255_fsm ./kingle_tbs/PG_10_201707211/16387/1247 ./kingle_tbs/PG_10_201707211/16387/1247_fsm ./kingle_tbs/PG_10_201707211/16387/1249 ./kingle_tbs/PG_10_201707211/16387/1249_fsm ./kingle_tbs/PG_10_201707211/16387/1259 ./kingle_tbs/PG_10_201707211/16387/1259_fsm ./kingle_tbs/PG_10_201707211/16387/2604 ./kingle_tbs/PG_10_201707211/16387/2606 ./kingle_tbs/PG_10_201707211/16387/2611 ./kingle_tbs/PG_10_201707211/16387/2610 ............................................................. pgdata/postgresql.auto.conf ./pgdata/pg_ident.conf ./pgdata/logfile ./pgdata/postgresql.conf ./pgdata/log/ ./pgdata/pg_hba.conf ./pgdata/current_logfiles [postgres@kafka01 data]$ 现在就已经完成备份了

      03,停止pg_stop_backup

    postgres=# select pg_stop_backup(false);

    这样就完成了一个基础的一次备份

      

  • 相关阅读:
    js的基本数据类型有哪些?
    UML 类图
    三种代理模式
    jsp 知识点
    httpServlet
    Qt时间&日期
    Microsoft visual studio C 运行时库 在 xx.exe中检测到一个错误
    C++调用COM之错
    PCL中的bug修改
    Qt使用SQLite
  • 原文地址:https://www.cnblogs.com/kingle-study/p/13065317.html
Copyright © 2011-2022 走看看