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

前端之家收集整理的这篇文章主要介绍了PostgreSQL 增量备份详解以及相关示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文:

http://blog.chinaunix.net/uid-259788-id-4069007.html

Postgresql 没有类似MysqL 的二进制日志, 但是有和MysqL 类似的REDO LOG,并且有MysqL 没有的REDO 归档功能。当然REDO 的归档已经MariaDB 和Percona-MysqL 已经实现。
那我们就利用PGsql的REDO 归档,也叫WAL来实现增量备份。

配置

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


  1. /home/full_backup 保存全备的目录。
  2. /home/increment_log 保存增备的目录。


  3. 进入postgresql.conf
  4. 开启WAL.
  5. wal_level = archive
  6. wal_keep_segments=1
  7. 开启WAL 的归档模式.
  8. archive_mode = on
  9. 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: startingarchive 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
原文链接:https://www.f2er.com/postgresql/195103.html

猜你在找的Postgre SQL相关文章