PostgreSQL修炼之道之高可用性方案设计(十七)

news2024/11/23 5:15:54

目录

20 高可用性方案设计(二)

20.2 基于共享存储的高可用方案

20.2.1 SAN存储的方案

20.2.2 DRBD的方案

20.3 WAL日志同步或流复制同步的方案

20.3.1 持续复制归档的standby的方法

20.3.2 异步流复制的方案

20.3.3 基于同步流复制方案

20.4 基于触发器的同步方案

20.4.1 方案的特点

20.4.2 基于触发器方案的同步软件介绍


20 高可用性方案设计(二)

20.2 基于共享存储的高可用方案

20.2.1 SAN存储的方案

        SAN是“Storage Area Network”的缩写,即“存储区域网络”。与TCP/IP网络不同,“存储区域网络”是专为存储系统而设计的,它使用FC协议,而TCP/IP网络是通用功能的网络,支持各种各样功能的网络。SAN网络的架构与以太网网络类似,通常的架构图如图20-1所示。
        在图20-1中,存储设备可以是多台,存储设备和需要使用存储的服务器之间通过光纤线和 SANswitch连接,SAN Switch与以太网中的交换机类似。服务器上也插有类似以太网网卡的HBA卡。
        使用SAN共享存储的 PostgreSQL高可用方案的架构图 如图20-2所示。


        从该架构图看,两台数据库服务器共享一块或多块从存储上划出的磁盘。磁盘上格式化了文件系统,PostgreSQL的数据文件就存在此文件系统上。在主/备库上都可以看到此共享磁盘,在主库上此磁盘上的文件系统是挂起来的,备库上此文件系统没有挂起。当主库发生故障时,由第三方的高可用软件把文件系统在备库上挂起,然后再在备库上启动数据库即完成了切换。
        实际上进行高可用切换时,并不像上面所说的这么简单,当主库发生故障时,可能只是主库与外部的网络断开了,它与存储设备的连接还是好的,同时文件系统还挂着,如果此时把文件系统在另一台机器上挂起来,像Ext3、Ext4、xfs等文件是不能同时在两台机器上挂起来的,同时挂起时,两台机器都会对文件系统进行写操作,这就会导致文件系统的损坏。为了避免这种情况,最常用的方法是主库没有收到心跳时就自动重启(相当于“自杀”),或者备库在挂文件系统之前通过其他办法,如向服务器的IPMI接口(IPMI是智能平台管理接口的简称,是一种开放标准的硬件管理接口)发送重启主机的命令,让主库重启可阻止主库对文件系统的写操作。另一种方法是使用存储提供的“reserve_lock”功能,备机在挂起文件系统之前,通知存储,让存储不允许主库写此磁盘以避免文件系统的损坏。

20.2.2 DRBD的方案

        SAN存储比较昂贵,使用该方案的成本较高。还有一种类似共享存储的廉价方案,即使用DRBD仿真共享存储的方案。
        DRBD是“Distributed Replicated Block Device”的缩写,DRBD是一个开源软件,它的大部分功能都是在Linux内核中实现的,目前大多数Linux发行版本中都已带有DRBD软件。DRBD是通过用软件实现的、无共享的、服务器之间块设备内容的复制软件。
DRBD有以下两种模式。

  • 单主模式:只有主设备可以写,备设备不可以写。
  • 双主模式:两个设备都可以读写。

数据同步的方式有以下三种。

  • 协议A:异步复制协议,本地写成功后立即返回,数据放在发送buffer中,可能丢失。
  • 协议B:内存同步(半同步)复制协议。本地写成功并将数据发送到对方后立即返回,如果双机掉电,数据可能丢失。
  • 协议C:同步复制协议。本地和对方写成功确认后返回。如果双机掉电或磁盘同时损坏,数据可能丢失。

 

20.3 WAL日志同步或流复制同步的方案

20.3.1 持续复制归档的standby的方法

        在PostgreSQL9.X之前的版本中,不支持流复制时只能通过拷贝归档在主备库之间实现同步。不过相对于流复制,手工复制归档文件同步可以做到更灵活,若需要备库落后主库一段时间来防止人工误删除等逻辑错误,可以写一个脚本,使其每过一段时间才把主库上的归档拷贝到备库上,让备库应用这些日志,这样就可以保证备库一定是落后主库一定时间的。在落后的这段时间内,如果主库被误删除了数据,还可以在备库上找回相应的数据。

20.3.2 异步流复制的方案

        当使用异步流复制的方案时,进行高可用切换会丢失部分数据。这个方案可以用于切换时容忍丢失少量数据的场景中。这个方案的架构图如图20-4所示。


20.3.3 基于同步流复制方案

        当使用同步流复制时,如果主库与从库之间的网络中断或从库出现问题,主库也会被hang 住,而此时只有一个主库和一个从库,那么是无法做高可用方案的。PostgreSQL的解决方案是使用两个从库,只要有一个从库是正常的,主库就不会 hang 住。这个方案的架构如图20-5所示。


20.4 基于触发器的同步方案

20.4.1 方案的特点

        前面讲解了基于共享存储和WAL日志同步的高可用方案,这两种方案都是对整个数据库实例进行同步的,而本节讲解的基于触发器的同步方案,则可以做到只同步一部分数据,它更为灵活,但也有以下几个缺点:

  • 对数据库的性能影响较大。
  • 不能同步DDL。
  • 用户和权限的变更也不能同步。

20.4.2 基于触发器方案的同步软件介绍


基本此方案做的同步软件较多,常见的开源软件有:

  • slony
  • bucardo
  • skype公司开发的 longdist

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/597190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国内外低代码开发平台发展情况如何?

国内外低代码开发平台发展情况如何?之前有些过很多关于低代码的内容,这篇就来详细梳理下国内外低代码开发平台发展现状。 关于低代码解读看这篇>>什么是低代码(Low-Code)?关于低代码平台看这篇>>主流的开…

业务高速增长,如祺出行如何用腾讯云消息队列 RocketMQ 应对挑战

导语 作为广汽集团旗下的智慧出行平台,如祺出行上线四年时间,用户规模和订单量保持高速增长。在过去的2022年,如祺出行平台累计注册用户突破1800万,同比增长64%,年度订单总量超7000万,同比增长52%。 高速…

【MCS-51】串行I/O接口及其通信

我们知道MCS-51中有很多的引脚,这些引脚很多一般都是用作输入或者输出口,其中有两个引脚P3.0和P3.1比较特殊,我们常将其用作串行通信的数据发送和接收端TXD、RXD。 目录 🐱通信方式 🐱串行通信的传输方式和数据通信…

python笔记17_实例演练_二手车折旧分析p2

…… 书接上文 4.车辆等级维度 探查车龄为5年的车辆,折旧价值与车辆等级的关系。 # 筛选出车龄为5的数据创建新表 data_age5 data[data[age] 5] data_age5 # 分组聚合计算均值 data_car_level data_age5.groupby(car_level_name)[lowest_price].mean().reset…

16.2:岛屿数量问题

文章目录 岛屿数量问题方法一:采用递归的方法方法二:使用并查集的方法(map)方法三:使用并查集的方法(数组) 岛屿数量问题 测试链接:https://leetcode.com/problems/number-of-islan…

大数据:分布式计算,MapReduce,hadoop的计算组件,hive是sql分布式计算框架,底层就是基于MapReduce的

大数据:分布式计算,MapReduce,hadoop的计算组件,hive是sql分布式计算框架,底层就是基于MapReduce的 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学…

【C++】一文带你入门 STL

一 STL 组成 graph LRA[STL] --- B[容器 container]A --- C[配接器 adapter]A --- D[迭代器 iterator]A --- E[仿函数 function]A --- F[算法 algorithm]A --- G[空间配置器 allocator]二 常用容器 容器简介 下面我们来简单看一下这些容器的常用接口的使用,并分析…

更新中-深度学习实战中遇到的一些概念+少量代码

onnx ONNX 是一种用于机器学习模型的开放式表示格式,它可以让不同的深度学习框架之间共享模型。 import onnxruntime # 加载模型 session onnxruntime.InferenceSession(model.onnx) # 运行模型。第一个参数是输出变量列表,不指定的话返回所有值 outp…

ESP8266使用MicroPython接入ThingsBoard

1、概述 我们老大当初叫我学习microPython,这个可以直接将代码发到板子上,然后就可以跑,就相当于设备业务代码由我们来写,不仅仅是让嵌入式来写,嵌入式做的就是封装函数,我们可以调用.最终这个还是实现了,但是没有推广. 2、设备 我自己购买的设备是ESP8266,某宝上购买的,mic…

智能仓储系统哪家公司做的比较好?求推荐排名不错的智能仓储公司?

什么是仓储服务信息平台?仓储服务信息平台可以为企业提供哪些便利? 随着电商和物流行业的快速发展,仓储服务越来越受到人们的关注。为了更好地管理仓储服务,提高效率,降低成本,仓储服务信息平台也应运而生…

CTF国赛2023 - ukfc(四道逆向已下班)

没啥好说的,惜败已复现:badkey1、国粹、ezbyte、moveAside、ezAndroid Notice:复现时候的一些题解来源于各大战队的wp,比如F61d,侵删 Re ezbyte 首先跟踪很容易分析到前后缀 至于里面的,得知道是dwarf…

哪个牌子的电容笔好用?Apple Pencil平替

随着时代的进步,数码产品在人们日常生活中的使用频率越来越高,一个iPad和一支电容笔似乎已然成为人们主要的学习工具了。电容笔的发展速度很快,在众多的电容笔牌子中,什么牌子好用又便宜?下面,我来给大家推…

深度学习进阶篇[8]:对抗神经网络GAN基本概念简介、纳什均衡、生成器判别器、解码编码器详解以及GAN应用场景

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

FastReport Business Graphics .NET 2023.1 Crack

FastReport 商业图形 .NET .NET WinForms 的数据可视化库 使用 FastReport 业务图形库,您可以可视化不同层次的数据,构建业务图表以供进一步分析和决策。 所有这些都可以直接在您的应用程序中工作! 利用 .NET 7、.NET Core、Blazor、ASP.NE…

数据采集学习心得

数据采集是指从互联网或其他数据源中收集数据的过程。在当今信息时代,数据采集已经成为了一项非常重要的技能。无论是在商业领域还是学术领域,数据采集都是非常必要的。本文将分享我在学习数据采集过程中的心得体会。 一、数据采集的重要性 在当今信息…

高考即将到来,如何选择大学和专业?(2023版本)

同学们,高考又快到了,怎么选择大学和专业一直是同学们心烦的事情,正所谓“选择大于努力”,选择错了,努力方向自然就错了,事倍功半,甚至南辕北辙,所以对此我们必需慎之又慎&#xff0…

Mybatis自定义分页插件及PageHelper源码分析

文章目录 前言一、自定义一个简单的mybatis分页插件?1.判断当前传参是不是一个Page,如果是page就进行转换。2.分页查询总条数3.修改原有sql4.执行原有方法5.存在问题: 二、PageHelper分析1.PageHelper简介2.PageHelper源码分析 三&#xff1a…

概率论:假设检验

参考书目:《行为科学统计精要》(第八版)——弗雷德里克J格雷维特 1、假设检验预备知识 Z分位数样本均值的分布标准误 参考: 概率论:样本与总体分布,Z分数与概率_格勒王的博客-CSDN博客如何理解样本和整体…

Linux入门到进阶

文章目录 前言一、第一章-初识Linux1.初识Linux2.虚拟机介绍3.VMware Workstation安装4.在VMware上安装Linux5.远程连接Linux系统6.扩展:WSL(Windows Subsystem for Linux)7.扩展:虚拟机快照 二、第二章-Linux基础命令1.Linux的目…

AMEYA360:纳芯微推出车规级耐高压、三线霍尔开关及锁存器NSM101x系列

纳芯微推出全新三线制车规霍尔效应开关/锁存器NSM101x系列,为数字位置检测提供高精度的解决方案,可被广泛应用于汽车执行器等的位置检测。 NSM101x产品系列包含了3个产品型号,即NSM1011(单极霍尔开关)、NSM1012(全极霍尔开关)、NSM1013(霍尔锁…