PostgreSQL 最佳实践 - 块级增量备份(ZFS篇)双机HA与块级备份部署

背景

基于流复制的HA, 采样如下方案.

https://github.com/digoal/PostgreSQL_HA_with_primary_standby_2vip

本文介绍一下, 在没有其他主机的情况下, 如何实施块级别的增量备份.

(假设主机为了性能, 未直接使用ZFS作为文件系统)

主要用到的是chroot, zfs. 当前, 现在btrfs 也支持snapshot, 所以随便你的选择了.

实现方法也比较多, 我们可以用容器, 例如docker, 也可用虚拟机.

本文采用KVM虚拟机, 在虚拟机中使用ZFS文件系统, 在虚拟机中创建以宿主机数据库为primary的第三个standby.

然后在zfs上做快照.

宿主机的归档如何传递给虚拟机

我这里虚拟机和宿主机用的不同网段, 虚拟机出外网使用NAT转发通讯.

# iptables -L -v -n -t nat
Chain PREROUTING (policy ACCEPT 22449 packets, 1310K bytes)
 pkts bytes target     prot opt in     out     source               destination           

Chain POSTROUTING (policy ACCEPT 25464 packets, 1325K bytes)
 pkts bytes target     prot opt in     out     source               destination
  116  6960 MASQUERADE  tcp  --               192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-65535
  337 23214 MASQUERADE  udp  --               192.168.122.0/24    !192.168.122.0/24    masq ports: 1024-65535
    0     0 MASQUERADE  all  --               192.168.122.0/24    !192.168.122.0/24      

Chain OUTPUT (policy ACCEPT 25464 packets, 1325K bytes)
 pkts bytes target     prot opt in     out     source               destination

这种通讯方式, 要直接挂载远端的NFS是有问题的, 所以需要用其他方式来获取远端归档.

我这里选择的方法是scp, 将虚拟机的postgres 用户下的key拷贝到2台宿主机, 使用scp来拷贝归档.

假设宿主机的物理IP分别为172.16.18.25,172.16.18.26.

restore_command = 'ping -c 1 -W 1 172.16.18.25 && scp root@172.16.18.25:/data04/pgdata/arch//%f %p; ping -c 1 -W 1 172.16.18.26 && scp root@172.16.18.26:/data04/pgdata/arch//%f %p'
primary_conninfo = 'host=192.168.122.1 port=1921 user=replica keepalives_idle=60'

为什么不直接使用primary VIP呢?

假设primary VIP是172.16.18.27.

因为VIP会漂移, 一旦漂移, 虚拟机的~/.ssh/known_hosts里面的条目就会失效, 需要重新编写, 比较麻烦.

配置宿主机

自动启动虚拟机

# cat /etc/rc.local
# kvm
/usr/bin/virsh start centos6_6_x64

配置虚拟机自动启动数据库

# cat /etc/rc.local
su - postgres -c "pg_ctl start"

配置虚拟机自动快照

# crontab -l
8     /usr/sbin/ntpdate asia.pool.ntp.org && /sbin/hwclock --systohc
1 4   * /root/script/zfs_snap.sh  

# cat /root/script/zfs_snap.sh
#!/bin/bash  

DATE="`date +%Y%m%d`"
# 注意, 第一个快照的位置是$PGDATA 即控制文件所在的zfs
/sbin/zfs snapshot zp1/data02@$DATE
/sbin/zfs snapshot zp1/data01@$DATE
/sbin/zfs snapshot zp1/data03@$DATE
/sbin/zfs snapshot zp1/data04@$DATE

现在快照有了, 加上宿主机上的归档也在, 完全可以实现基于时间点的恢复 .

最后, 强烈建议pg_xlog不要放在zfs文件系统中. 宁愿放在虚拟机的系统盘里面也不要放在ZFS里面.

时间: 2024-11-03 06:52:48

PostgreSQL 最佳实践 - 块级增量备份(ZFS篇)双机HA与块级备份部署的相关文章

PostgreSQL 最佳实践 - 块级增量备份(ZFS篇)多zfs卷场景一致性备份

背景 当我们使用了多个ZFS卷或者文件系统时,如果一个实例的多个部分,如表空间,放在了不同的zfs上,再使用基于ZFS快照的备份时,可能出现多个文件系统不一致的情况. 例如控制文件是新的,但是数据是旧的. 保物理备份的一致性检查 基于文件的物理备份,为了保证备份的一致性,在备份开始时,需要做一个检查点,同时打开FULL PAGE WRTIE,同时还会生成backup_label文件记录备份开始时的WAL文件,检查点位置等信息. backup_label文件内容示例 START WAL LOCAT

每天万亿+级 实时分析、数据规整 - 阿里云HybridDB for PostgreSQL最佳实践

背景 横看成岭侧成峰, 远近高低各不同. 不识庐山真面目, 只缘身在此山中. 不同的视角我们所看到的物体是不一样的, http://t.m.china.com.cn/convert/c_ovWL9w.html 图为墨西哥城放射状的街区广场. 图为西班牙迷宫般的果树漩涡. 地心说和日心说也是视角不同所呈现的. 实际上数据也有这样,我们每天产生海量的数据,有各种属性,以每个属性为视角(分组.归类.聚合),看到的是对应属性为中心的数据. 对应的业务场景也非常多,例如: 1.物联网, 每个传感器有很多属

音视图(泛内容)网站透视分析 DB设计 - 阿里云(RDS、HybridDB) for PostgreSQL最佳实践

标签 PostgreSQL , 用户透视 , 设备透视 , 圈人 , 标签 , 视频网站 , 优酷 , 土豆 , 喜马拉雅 背景 日常生活中,人们使用最多的除了社交类网站.购物网站,估计就是音频.视频.图文信息类内容网站了. 视频网站,已经渗透到各种终端,除了喜闻乐见的手机,还包括移动终端.电脑.盒子.电视.投影仪等.有设备属性.会员属性.渠道属性等. 内容运营是非常重要的环节,而透视则是运营的重要武器. 业务需求 1.生成设备.会员画像 ID.各个维度的标签.其中包括一些多值列标签(例如最近7

(新零售)商户网格化运营 - 阿里云RDS PostgreSQL最佳实践

标签 PostgreSQL , PostGIS , 地理位置 , KNN , 近邻检索 , 网格检索 , polygon中心点 , 半径搜索 背景 伟大的马老师说: "纯电商时代很快会结束,未来的十年.二十年,没有电子商务这一说,只有新零售这一说,也就是说线上线下和物流必须结合在一起,才能诞生真正的新零售" 线上是指云平台,线下是指销售门店或生产商,新物流消灭库存,减少囤货量. 电子商务平台消失是指,现有的电商平台分散,每个人都有自己的电商平台,不再入驻天猫.京东.亚马逊大型电子商务平

海量实时计算+OLTP+OLAP DB设计 - 阿里云(RDS、HybridDB) for PostgreSQL最佳实践 - 泛电网系统应用

标签 PostgreSQL , 国家电网 , 电表 , 余额 , 流式计算 , 状态监测 , 上下文相关 背景 电网系统是一个关系民生,又非常典型的传统系统,虽然传统,量可不小.在互联网化(物联网化)的今天,有很多值得借鉴和思考的点供给其他相关系统参考. 每个省份大概有亿级户电表,最大的地市可能有千万户级别. 以往我们电费是怎么交的呢?我们小区是两个月交一次,也就是说先消费,再付款的方式.这么说起来电网真的是很仁义啊,现在哪有这么多先消费再付款的呀.移动话费.家庭宽带.天然气等等,都是充值后使用

云端流计算、在线业务、实时分析 闭环设计 - 阿里云RDS、HybridDB for PostgreSQL最佳实践

背景 水的流动汇成江河大海,孕育生命,形成大自然生态.数据流动,推进社会进步,拓展业务边界. <从人类河流文明 洞察 数据流动的重要性> 以某淘系业务案例展开,看看用户如何利用阿里云RDS PostgreSQL,HybridDB for PostgreSQL,海量对象存储OSS,打造一个从流计算到在线业务,再到数据分析和挖掘的业务,发挥数据的价值,拓展业务的边界. 业务简介 一个电商业务通常会涉及 商家.门店.物流.用户.支付渠道.贷款渠道.商品.平台.小二.广告商.厂家.分销商.店主.店员.

贷款、天使投资(风控助手)业务数据库设计 - 阿里云RDS PostgreSQL, HybridDB for PostgreSQL最佳实践

标签 PostgreSQL , HybridDB for PostgreSQL , 小微贷款 , 金融风控 , 企业图谱 , 图式搜索 , 舆情分析 , 自动贷款 , 贷款审查 , 审查神器 背景 贷款是银行的主营业务之一,但是并不是只有银行能提供贷款,实际上资金雄厚的公司都有能力提供贷款(比如保险行业.资源垄断型企业等). 除了放贷,我们常说的天使投资.A轮B轮啥的,也是类似的场景,凭什么投你,背后如何决策也需要决策系统的支撑. 与贷款相反的是吸金类业务,比如我们现在发现越来越多的理财产品.股

机票业务(单实例 2700万行/s return)数据库架构设计 - 阿里云RDS PostgreSQL最佳实践

背景 机票业务的某个模块,数据量10亿+,写.更新.删除量较低.根据KEY查询一些数据,每次查询返回1万条左右的记录. 就是这样简单的需求,业务方发现读成为了巨大的瓶颈,每次返回1万条,100个并发请求,每秒就是100万条(500MB左右),主要的瓶颈: 1.网络是个较大的开销. 2.不同KEY的数据可能是分散存放的,存在查询时的IO放大,可能有一定的性能影响. 3.每次请求的返回记录数较多,数据库search buffer调用可能开销会上升. 就这几个问题,我们来看看如何优化或解决业务方的问题

Greenplum 空间(GIS)数据检索 B-Tree &amp; GiST 索引实践 - 阿里云HybridDB for PostgreSQL最佳实践

标签 PostgreSQL , GIS , PostGIS , Greenplum , 空间检索 , GiST , B-Tree , geohash 背景 气象数据.地震数据.室内定位.室外定位.手机.车联网.还有我们最喜欢的"左划不喜欢.右划喜欢",越来越多的位置属性的数据.将来会越来越多. 基于GIS的数据分析.OLTP业务也越来越受到决策者的青睐,例如商场的选址决策,O2O的广告营销等.有很多基于多边形.时间.用户对象属性过滤的需求. 阿里云HybridDB for Postgr