• PostgreSQL 增量备份详解以及相关示例


    PostgreSQL 没有类似MySQL 的二进制日志, 但是有和MySQL 类似的REDO LOG,并且有MySQL 没有的REDO 归档功能。当然REDO 的归档已经MariaDB 和Percona-MySQL 已经实现。

    那我们就利用PGSQL的REDO 归档,也叫WAL来实现增量备份。  



    假设我们已经做了一个物理的全备,并且相应的参数都已经设置完毕,比如以下:

    1.  
      /home/full_backup 保存全备的目录。
    2.  
      /home/increment_log 保存增备的目录。
    3.  
       
    4.  
       
    5.  
      进入postgresql.conf
    6.  
      开启WAL.
    7.  
      wal_level = archive
    8.  
      wal_keep_segments=1
    9.  
      开启WAL 的归档模式.
    10.  
      archive_mode = on
    11.  
      archive_command = 'test ! -f /home/increment_log/%f && cp %p /home/increment_log/%f' (归档,也就是增量)




    那么关于WAL归档日志要注意的一点是,如果CRASH 掉了,那么没有归档的XLOG也可能没有提交到数据文件,所以有可能这部分数据会丢失掉。所以在之后恢复的时候我们要把这部分XLOG拷贝到全备的对应目录。




    恢复方法:

    1.  
      1. 确保没有任何业务对PG服务进行访问。(有可能这个时候PG已经CRASH掉了。)
    2.  
      2. 先停掉POSTGRESQL 服务。
    3.  
      3. cd /home/pgsql;
    4.  
      4. mv data data_old
    5.  
      6. cp -rfp /home/full_backup/* /home/pgsql (拷贝全备)
    6.  
      7. cp -rfp data_old/pg_xlog/000* data/pg_xlog/ (这里是拷贝自从最后一个增量和系统CRASH之间的XLOG到对应的目录。)
    7.  
      8. cd data
    8.  
      9. vi recovery.conf (添加recovery.conf文件,让PG认为这次是在恢复。)
    9.  
      restore_command='test ! -f /home/increment_log/%f && cp /home/increment_log/%f %p'
    10.  
      recovery_target_timeline = 'latest'
    11.  
      10. chown -R postgres.postgres recovery.conf
    12.  
      11. 启动postgresql 服务即可。






    如果正确恢复了,那么recovery.conf 会自动更名为recovery.done.


    以我的机器为例,我的版本是9.3,PG_XLOG中看到的BACKUP 信息:

    1.  
      [root@postgresql-instance pg_xlog]# cat 000000010000000000000003.00000028.backup
    2.  
      START WAL LOCATION: 0/3000028 (file 000000010000000000000003)
    3.  
      STOP WAL LOCATION: 0/30000B8 (file 000000010000000000000003)
    4.  
      CHECKPOINT LOCATION: 0/3000028
    5.  
      BACKUP METHOD: pg_start_backup
    6.  
      BACKUP FROM: master
    7.  
      START TIME: 2014-01-07 03:35:02 EST
    8.  
      LABEL: ytt
    9.  
      STOP TIME: 2014-01-07 03:36:27 EST





    日志中会看到恢复如下恢复信息:

      1.  
        < 2014-01-07 05:02:47.361 EST >LOG: 00000: starting archive recovery
      2.  
        < 2014-01-07 05:02:47.361 EST >LOCATION: StartupXLOG, xlog.c:4983
      3.  
        < 2014-01-07 05:02:47.369 EST >LOG: 00000: redo starts at 0/3000028
      4.  
        < 2014-01-07 05:02:47.369 EST >LOCATION: StartupXLOG, xlog.c:5531
      5.  
        < 2014-01-07 05:02:47.371 EST >LOG: 00000: consistent recovery state reached at 0/303FC88
  • 相关阅读:
    Mybatis框架(一)
    maven(一)
    shiro安全框架(二)
    shiro安全框架(一)
    Linux系统
    maven(二)
    Redis存储系统(二)
    Redis存储系统(一)
    1.2 性能测试(效率)
    1.3 压力测试/极限测试(可靠性)
  • 原文地址:https://www.cnblogs.com/telwanggs/p/11547274.html
Copyright © 2020-2023  润新知