首页 > 其他分享 >不同解决方案的比较

不同解决方案的比较

时间:2024-05-29 12:34:23浏览次数:21  
标签:解决方案 文件系统 查询 故障 复制 不同 服务器 比较 备用

共享磁盘故障转移

共享磁盘故障转移通过仅拥有一个数据库副本来避免同步开销。它使用由多台服务器共享的单个磁盘阵列。如果主数据库服务器发生故障,备用服务器能够挂载并启动数据库,就像从数据库崩溃中恢复一样。这允许快速故障转移而不会丢失数据。

共享硬件功能在网络存储设备中很常见。也可以使用网络文件系统,但必须注意文件系统是否具有完整的POSIX行为(请参见第 18.2.2 节)。此方法的一个重大限制是,如果共享磁盘阵列发生故障或损坏,主服务器和备用服务器都将无法运行。另一个问题是,在主服务器运行时,备用服务器永远不应访问共享存储。

文件系统(块设备)复制

共享硬件功能的一个修改版本是文件系统复制,其中对文件系统的所有更改都会镜像到驻留在另一台计算机上的文件系统。唯一的限制是镜像必须以确保备用服务器具有文件系统的一致副本的方式进行 — 具体而言,对备用服务器的写入必须按照与主服务器相同的顺序进行。DRBD是一种流行的 Linux 文件系统复制解决方案。

事务日志传送

通过读取预写日志 ( WAL ) 记录流,温备用服务器和热备用服务器可以保持最新状态。如果主服务器发生故障,备用服务器将包含主服务器的几乎所有数据,并可以快速成为新的主数据库服务器。这可以是同步的,也可以是异步的,并且只能针对整个数据库服务器执行。

备用服务器可以使用基于文件的日志传送(第 26.2 节)或流复制(参见第 26.2.5 节)或两者结合来实现。有关热备用的信息,请参见第 26.5 节

基于触发器的主备复制

主备复制设置将所有数据修改查询发送到主服务器。主服务器异步将数据更改发送到备用服务器。备用服务器可以在主服务器运行时回答只读查询。备用服务器是数据仓库查询的理想选择。

Slony-I是此类复制的一个示例,具有表级粒度,并支持多个备用服务器。由于它以异步方式(批量)更新备用服务器,因此在故障转移期间可能会丢失数据。

基于语句的复制中间件

使用基于语句的复制中间件,程序会拦截每个 SQL 查询并将其发送到一台或所有服务器。每台服务器独立运行。读写查询必须发送到所有服务器,以便每台服务器都能收到任何更改。但只读查询可以只发送到一台服务器,从而允许读取工作负载在它们之间分配。

如果查询只是未经修改地广播,那么诸如random()CURRENT_TIMESTAMP和序列之类的函数在不同的服务器上可能会有不同的值。这是因为每个服务器都独立运行,并且 SQL 查询是广播的(而不是实际修改的行)。如果这是不可接受的,那么中间件或应用程序必须从单个服务器查询这些值,然后在写入查询中使用这些值。另一种选择是将此复制选项与传统的主备设置一起使用,即,数据修改查询仅发送给主服务器并通过主备复制传播到备用服务器,而不是通过复制中间件。还必须注意所有事务在所有服务器上提交或中止,也许使用两阶段提交(PREPARE TRANSACTIONCOMMIT PREPARED)。Pgpool -II和Continuent Tungsten是此类复制的示例。

异步多主复制

对于不经常连接或通信链路较慢的服务器(如笔记本电脑或远程服务器),保持服务器之间的数据一致是一项挑战。使用异步多主复制,每台服务器独立工作,并定期与其他服务器通信以识别冲突的事务。冲突可以由用户或冲突解决规则解决。Bucardo 就是这种复制类型的一个例子。

同步多主复制

在同步多主复制中,每台服务器都可以接受写入请求,并且修改后的数据在每次事务提交之前都会从原始服务器传输到其他每台服务器。大量的写入活动可能会导致过多的锁定和提交延迟,从而导致性能不佳。读取请求可以发送到任何服务器。一些实现使用共享磁盘来减少通信开销。同步多主复制最适合大多数读取工作负载,但它的一大优势是任何服务器都可以接受写入请求 — 无需在主服务器和备用服务器之间划分工作负载,并且由于数据更改是从一台服务器发送到另一台服务器的,因此不会出现非确定性函数的问题random()

 

PostgreSQL不提供这种类型的复制,尽管PostgreSQL两阶段提交(PREPARE TRANSACTIONCOMMIT PREPARED)可用于在应用程序代码或中间件中实现此功能。

商业解决方案

由于PostgreSQL是开源的并且易于扩展,许多公司都采用PostgreSQL并创建了具有独特故障转移、复制和负载平衡功能的商业闭源解决方案。

高可用性、负载平衡和复制功能矩阵

FeatureShared Disk FailoverFile System ReplicationTransaction Log ShippingTrigger-Based Master-Standby ReplicationStatement-Based Replication MiddlewareAsynchronous Multimaster ReplicationSynchronous Multimaster Replication
Most Common Implementation NAS DRBD Streaming Repl. Slony pgpool-II Bucardo  
Communication Method shared disk disk blocks WAL table rows SQL table rows table rows and row locks
No special hardware required  
Allows multiple master servers        
No master server overhead        
No waiting for multiple servers   with sync off    
Master failure will never lose data with sync on    
Standby accept read-only queries     with hot
Per-table granularity        
No conflict resolution necessary  

 

标签:解决方案,文件系统,查询,故障,复制,不同,服务器,比较,备用
From: https://www.cnblogs.com/wonchaofan/p/18220005

相关文章

  • C语言-----前置++和后置++的不同
    #include<stdio.h>intmain(){inta,b,c;a=5;c=++a;b=++c,c++,++a,a++;b+=a+++c;printf("a=%db=%dc=%d\n:",a,b,c);return0;}/*1、逗号运算符的优先级比赋值运算符=号的优先级低2、++、+的优先级比+=......
  • 星汉云管理网络解决方案,助力企业网络升级和业务发展
    为了应对数字化时代企业网络面临的新挑战,映翰通推出基于云管理的新一代网络解决方案,可灵活应用于连锁门店、企业办公等网络场景。映翰通星汉云管理网络解决方案包括云管理的边缘路由器、AP、交换机、5GODU蜂窝产品及小星云管家SaaS服务,通过整合创新的IT管理、物联网、5G等技术......
  • java: 错误: 不支持发行版本 5的解决方案
    file->setting修改以下信息 修改pom.xml,添加以下代码<properties>    <maven.compiler.source>17</maven.compiler.source>    <maven.compiler.target>17</maven.compiler.target>  </properties>......
  • Android 关于MVP、MVC、MVVM原理、使用方法、优缺点以及共同之处与不同之处详细介绍
    Android关于MVP、MVC、MVVM原理、使用方法、优缺点以及共同之处与不同之处详细介绍Android应用程序的设计模式,常见的三种模式是MVP(Model-View-Presenter)、MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)。它们在设计和组织Android应用程序中起着不同的作用,都......
  • (PAT乙级刷题)有多少不同的值
    题目:题解:#include<iostream>#include<map>#include<cmath>usingnamespacestd;map<int,int>mp;intmain(){intx;cin>>x;doublekey;//记录每一轮计算的值for(inti=1;i<=x;i++){key=abs(i/2)+abs(i/3......
  • 开源大模型与闭源大模型比较
    开源大模型与闭源大模型,你更看好哪一方?开源大模型与闭源大模型各有其优势和劣势,选择哪一方,实际上取决于多个维度的考量。以下是对两者进行详细分析的基础上,给出的综合观点。数据隐私一、开源大模型数据隐私保护:透明度:开源大模型的核心优势之一是其高度的透明度。由于源代......
  • C语言中strncpy、strncat、memcpy、memmove函数的详解与比较
    目录目录C语言中strncpy、strncat、memcpy、memmove函数的详解与比较一、strncpy函数二、strncat函数三、memcpy函数四、memmove函数C语言中strncpy、strncat、memcpy、memmove函数的详解与比较一、strncpy函数strncpy是C语言标准库中的一个函数,用于将字符串src复制到字符串d......
  • 统计不同文件夹中的文件数量,并绘制相应的柱状图。
    一、数据类型每个文件夹下都是这种文件,虽然可以通过手动数出来了解文件数量,但为了更直观地看到每个文件夹的文件数量,可以使用图表来表示,这样会更加清晰。效果展示:  二、代码实现 importosimportmatplotlib.pyplotaspltfolder_names=['0','1','2','3']......
  • 根据不同的dpi 媒体查询
    /*默认样式*/.element{width:100px;height:100px;background-color:blue;}/*当设备像素比为1.5时,调整.element的宽度*/@mediascreenand(resolution:144dpi){.element{width:150px;}}/*当设备像素比为1.0时,调整.element的宽度*/@mediascreenand(r......
  • 在Spring Boot应用中使用RestTemplate类发送不同的HTTP GET请求(带请求头、不带请求头)
    原文链接:https://www.cnblogs.com/windyWu/p/16872871.html在本文中,你将学会在SpringBoot应用中使用RestTemplate类发送不同的HTTPGET请求。简单GET请求发送GETHTTP请求,可以使用getForObject()或getForEntity()方法。如下示例,使用getForObject()方法获取JSON字符串形式的用......