PostgreSQL centrol PITR backup with kvm and zfs and nfs or zvol

less than 1 minute read

背景

在实际的生产环境中, 当数据库越来越多, 越来越大.

备份可能会成为比较大的问题, 传统的逻辑备份对于大的数据库不适用(因为备份和还原可能是比较耗时的, 而且也不能回到任意时间点,还会造成数据库膨胀(长时间repeatable read iso), 好处是可以跨平台恢复, 可选恢复表等).

但是基于XLOG的增量备份, 又需要结构一致, 如果要做集中的备份, 可能导致不同数据库集群占用同一个文件夹带来冲突(当然解决办法是重定向一个文件夹就好了)

那么如果环境中已有虚拟机的话, 可以使用虚拟机来解决文件夹冲突的问题. (不过个人还是推荐使用重定向, 可以省掉一层虚拟机的管理成本)

zfs在这里主要用到它的压缩, 去重和snapshot功能. 减少存储空间, 加快恢复速度等. 可以放在crontab定时执行, 例如2小时1次.

以下是使用虚拟机和zfs来管理存储的一种集中式XLOG增量备份的场景举例 ;

环境 :

DELL R720xd  
32G mem  
8 核 Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz  
CentOS 6.5 x64  

虚拟化, KVM

存储管理, ZFS, 开启压缩, dedup. (也可以考虑开源的分布式文件系统)

虚拟机数据分区, nfs或zvol.

方案图 :

这里的虚拟机数据分区用法, 分为两种, 一种是NFS, (VM中挂载NFS来实现PGDATA的存储)

zvol则是直接使用zfs卷来管理的, 效率比nfs更高一点.

pic

使用nfs的好处, 虚拟机和ZFS设备不需要在同一台主机.

使用zvol的话, 虚拟机和ZVOL必须是同一主机的.

整体的架构.

pic

归档wal存储可以考虑zfs或分布式存储. 归档方法很多, 可以使用rsync, cp, nfs等.

使用ZFS snapshot加速PITR.

使用本地用户的话, 架构图如下 :

每个用户配置独立的zfs存储对应的$PGDATA, 每个用户建议编译独立的$PGHOME.

pic

使用ZFS snapshot加速PITR.

参考

1. http://blog.163.com/digoal@126/blog/static/16387704020144183320807/

2. http://blog.163.com/digoal@126/blog/static/163877040201322462042878/

3. http://blog.163.com/digoal@126/blog/static/163877040201451332042136/

4. https://access.redhat.com/site/documentation/en-US

Flag Counter

digoal’s 大量PostgreSQL文章入口