分布式数据库集群

    xiaoxiao2022-07-13  156

    分布式数据库集群

    Mysql cluster是适用于分布式计算环境的高可用、高冗余版本的mysql,其技术在分布式系统中为mysql数据提供了冗余特性,增强了安全性,使得单个mysql服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障。Mysql cluster采用shared-nothing(无共享)架构,主要利用了NDB存储引擎来实现,NDB存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中,具有自动分片(分区)功能。数据被自动分布在集群中的不同存储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造成数据丢失。

    Mysql cluster需要一组计算机,用到mysql cluster安装包,在集群中的每台计算机上安装,只是每台计算机的角色可能是不一样的。Mysql cluster按照节点类型可以分为3类:管理节点(对其他节点进行管理)、数据节点(存放cluster中的数据,可以有多个)和mysql节点(存放表结构,可以有多个)。Cluster中的某计算机可以是某一种节点,也可以是2种或3种节点的集合。这3种节点只是在逻辑上划分,所以他们不一定和物理计算机是一一对应的关系。多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案。

    管理节点(MGM):这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据,停止节点,运行备份等。由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。

    数据节点(NDB):这类节点用于保存Cluster的数据,数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点,没有必要设定过多的副本,在NDB中数据会尽量的保存在内存中。数据节点使用命令“ndbd”(单线程)或"ndbmtd"(多线程)启动的。

    SQL节点:这是用来访问Cluster数据的节点,对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。

    Mysql cluster具体的同步复制步骤,如下所示:

    1.Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。 2.每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好(或者无法准备该事务)。 3.Master等待所有Slave发送OK或ABORT消息,如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务;如果 Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。 4.每个Slave等待来自Master的OK或ABORT消息。如果Slave收到提交请求,它们就会提交事务,并向Master发送事务已提交 的确认;如果Slave收到取消请求,它们就会撤销所有改变并释放所占有的资源,从而中止事务,然后向Masterv送事务已中止的确认。 5.Master收到来自所有Slave的确认后,就会报告该事务被提交(或中止),然后继续进行下一个事务处理。 由于同步复制一共需要4次消息传递,故mysql cluster的数据更新速度比单机mysql要慢。所以mysql cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方式。

    数据库的分布式和主从的区别:

    主从(Master-Slave): 主从机器上安装mysql community(普通版)就可以。

    主从并没有像集群那样分三种节点,只有主和从两种,而且主从之间是通过mysql的replication方式来保证数据的一致性。相对mysql cluster的数据同步方式来讲是异步的。

    主从复制的过程中,若从数据库中出现其中一条数据同步失败(即relay log中的语句有其中一条写操作语句执行失败),则后面的数据无法继续同步(relay log中后面的写操作语句无法继续执行下去),必须得解决掉或跳过这个执行失败的语句(需要人为去操作),这样就不能保证所有的从数据库的数据一致了。而mysql cluster则不然,若其中只要有一个节点的写操作失败,则其他所有节点针对这一同步均会更新失败,以保证所有节点的数据一致性。

    分布式集群的优点:

    MySQL Cluster 自动将表分片(或分区)到不同节点上,使数据库可以在低成本的商用硬件上横向扩展,同时保持对应用程序完全应用透明凭借其分布式、无共享架构,MySQL Cluster 可提供 99.999% 的可用性,确保了较强的故障恢复能力和在不停机的情况下执行预定维护的能力MySQL Cluster 让用户可以在解决方案中整合关系数据库技术和 NoSQL 技术中的最佳部分,从而降低成本、风险和复杂性MySQL Cluster 提供实时的响应时间和吞吐量,能满足最苛刻的 Web、电信及企业应用程序的需求。 具有跨地域复制功能的多站点集群跨地域复制使多个集群可以分布在不同的地点,从而提高了灾难恢复能力和全球 Web 服务的扩展能力为支持持续运营,MySQL Cluster 允许向正在运行的数据库模式中联机添加节点和更新内容,因而能支持快速变化和高度动态的负载

    缺点:

    随数据库容量增加,每个数据数据节点需要添加更多的内存,增加使用成本牺牲部分sql语言特性

    转:https://blog.csdn.net/qq_21153619/article/details/81529880

    这里有比较详细的数据库集群的搭建

    最新回复(0)