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

PostgreSQL 增量备份详解以及相关示例,第1张

概述PostgreSQL 没有类似MySQL 的二进制日志, 但是有和MySQL 类似的REDO LOG,并且有MySQL 没有的REDO 归档功能。当然REDO 的归档已经MariaDB 和Percona-MySQL 已经实现。 那我们就利用PGSQL的REDO 归档,也叫WAL来实现增量备份。   假设我们已经做了一个物理的全备,并且相应的参数都已经设置完毕,比如以下: /home/f Postgresql 没有类似MysqL 的二进制日志, 但是有和MysqL 类似的REDO LOG,并且有MysqL 没有的REDO 归档功能。当然REDO 的归档已经MariaDB 和Percona-MysqL 已经实现。

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




假设我们已经做了一个物理的全备,并且相应的参数都已经设置完毕,比如以下:
      /home/full_backup 保存全备的目录。      /home/increment_log 保存增备的目录。       进入postgresql.conf        开启WAL.       wal_level = archive        wal_keep_segments=1       开启WAL 的归档模式.        archive_mode = on	archive_command = 'test ! -f /home/increment_log/%f && cp %p /home/increment_log/%f' (归档,也就是增量)



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




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





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


以我的机器为例,我的版本是9.3,PG_XLOG中看到的BACKUP 信息:
[root@postgresql-instance pg_xlog]# cat 000000010000000000000003.00000028.backupSTART WAL LOCATION: 0/3000028 (file 000000010000000000000003)Stop WAL LOCATION: 0/30000B8 (file 000000010000000000000003)CHECKPOINT LOCATION: 0/3000028BACKUP METHOD: pg_start_backupBACKUP FROM: masterSTART TIME: 2014-01-07 03:35:02 ESTLABEL: yttStop TIME: 2014-01-07 03:36:27 EST




日志中会看到恢复如下恢复信息:
< 2014-01-07 05:02:47.361 EST >LOG:  00000: starting archive recovery< 2014-01-07 05:02:47.361 EST >LOCATION:  StartupXLOG,xlog.c:4983< 2014-01-07 05:02:47.369 EST >LOG:  00000: redo starts at 0/3000028< 2014-01-07 05:02:47.369 EST >LOCATION:  StartupXLOG,xlog.c:5531< 2014-01-07 05:02:47.371 EST >LOG:  00000: consistent recovery state reached at 0/303FC88
总结

以上是内存溢出为你收集整理的PostgreSQL 增量备份详解以及相关示例全部内容,希望文章能够帮你解决PostgreSQL 增量备份详解以及相关示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1182872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存