数据库集群是什么(服务集群是什么)

通常有两个大方向来应对日益增长的业务量。一种是纵向扩展,即增加单台服务器的CPU计算能力、内存容量和磁盘承载能力。另一种是横向扩展,即通过增加服务器数量来提高处

通常有两个大方向来应对日益增长的业务量。一种是纵向扩展,即增加单台服务器的CPU计算能力、内存容量和磁盘承载能力。另一种是横向扩展,即通过增加服务器数量来提高处理能力。前者存在业务中断、扩容天花板等诸多问题,尤其是互联网业务发展迅猛,单台服务器难以满足业务负载需求。所以横向扩张是目前比较流行的一种方式。

数据库集群

数据库的横向扩展是通过数据库集群实现的。数据库集群也有两种主要形式,一种是主从架构,即只能访问一台服务器上的数据库,不能访问另一台(多台)服务器上的数据库或者只能读取。另一种是活度架构,所有服务器都可以提供服务(同时读写)。

目前市面上大部分数据库都是主从架构,比如MySQL和SQL Server。图1是著名的MySQL数据库的主从复制示意图。主从复制是通过重放binlog来异步复制主库数据。因为从binlog获取数据和重放数据以及从主库写入数据之间存在时间延迟,所以从库的数据总是滞后于主库。这也是主从架构的缺点,就是不能保证数据的分布式一致性。当主库关闭时,一些数据可能会丢失。

数据库集群是什么(服务集群是什么)插图

图1 MySQL主从复制图1 MySQL主从复制

多活集群多活架构是集群中的节点可以同时向外界提供服务。根据集群中的节点是否可以共享数据,有两种活跃性架构。一个是未共享数据的多活动。在这种情况下,集群节点不能共享数据,每个节点负责不同的数据。比如数据库表按主键ID划分(比如模),不同的节点负责不同的区域。目前这种活度方案可以通过数据库中间件来实现,比如Mycat,这是一个开源的。

图2展示了一个基于Mycat的live数据库集群,主要分为两个区域,每个区域通过主副来保证可用性和分担负载。具体策略可以是取模。例如,当主键ID为1,3,5,7时...,数据存储在左主库中;2,4,6,8 ...数据存储在右边的主库中。

由于数据的隔离,上述访问的主要问题之一是容量扩展的相对困难。当需要增加集群节点数量时,需要重新划分数据的存储位置,这就需要进行大量的数据迁移。这不仅使操作变得复杂,而且增加了出现问题的风险。

共享存储多活集群(Oracle RAC)

另一种活跃性架构是共享存储集群架构,比较典型的是Oracle RAC(Oracle Real Application Cluster的全称)。在这种架构下,集群中的多个节点运行同一个数据库实例,数据完全一致,无论用户级访问哪个节点,得到的数据都是一样的。图3是Oracle RAC的示意图,三个节点组成一个集群,共享数据。

为了确保整个集群的可用性,Oracle RAC在部署时需要更多的硬件。在网络层面,Oracle RAC有三个网络系统,即外部访问网络、内部私有网络和存储网络。接入外网不需要太多。相信大家都明白。私有网络主要用于Oracle集群内部使用,包括数据传输、心跳和集群管理。这部分网络在部署时需要双交换机和双物理链路,以保证集群不会因为链路故障而出现异常。后面是存储网络,RAC集群用来访问存储资源,这部分也是冗余的。

为了更深入地了解Oracle RAC,我们来看一下其内部软件模块的组成。整个数据库层面差别不大,但主要有以下内容:虚拟IP(VIP)、ASM、集群件、仲裁盘。这些新组件共同完成Oracle的多活动集群功能。

虚拟IP是应用程序访问数据库的门户。它不绑定到任何服务器,但是可以在集群中的任何服务器之间漂移。因为这个特性,当服务器宕机时,数据集集群可以通过同一个接口向外界提供服务。

集群管理功能用ASM集群件实现,其中ASM管理磁盘,避免同时访问磁盘带来的数据不一致风险,而集群件用于管理Oracle集群的软件进程和资源调度。

仲裁盘用于判断集群中服务器的异常,集群中的节点通过定期更新仲裁盘中特定区域的数据来标记自己的健康状态。其他节点可以根据数据判断该节点是否宕机。

感谢阅读!今天到此为止。如果想了解更多详情,请在下方留言。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/232771.html

发表回复

登录后才能评论