优点:部署简单、实施方便,是MySQL自动支持的功能,主备机切换方便,可以通过第三方软件或者自行编写简单的脚本即可自动完成主备切换。
缺点:实际使用时,只能单主机进行写入,不一定能满足性能要求;服务器主机硬件故障时,可能会造成部分尚未传输至从机的数据丢失。
MySQL Cluster 是MySQL适用于分布式计算环境的高可用、高冗余版本,采用了NDB Cluster 存储引擎(“NDB”是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点),允许在1个 Cluster 中运行多个MySQL服务器。
原理:MySQL Cluster将标准的MySQL服务器与NDB Cluster存储引擎集成了起来。MySQL Cluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。所有这些程序一起构成了MySQL Cluster。将数据保存到NDB Cluster存储引擎时,表(结构)被保存到了数据节点中,应用程序能够从所有其他MySQL服务器上直接访问这些表。 参见下图:
优点:可用性非常高,性能非常好;每一份数据至少在不同主机上面存在一份拷贝,且实时同步;通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。
DRBD(Distributed Replicated Block Device),是由LINBIT 公司开发的,通过网络来实现块设备的数据镜像同步的一款开源Cluster软件,也被俗称为网络RAID1。
原理:DRBD介于文件系统与磁盘介质之间,通过捕获上层文件系统的所有IO操作,调用内核中的IO模块来读写底层的磁盘介质。当DRBD捕获到文件系统的写操作之后,会在进行本地的磁盘写操作的同时,以TCP/IP协议,通过本地主机的网络设备(NIC)将IO传递至远程主机的网络设备。当远程主机的DRBD监听到传递过来的IO信息之后,会立即将该数据写入到该DRBD所维护的磁盘设备。DRBD在处理远程数据写入的时候有三种复制模式,适用于不同的可靠性和性能要求情景。
优点:功能强大,数据在底层块设备级别跨物理主机镜像,可根据性能和可靠性要求配置不同级别的同步;IO操作保持顺序,可满足对数据一致性的苛刻要求。
缺点:非分布式文件系统环境无法支持镜像数据同时可见,性能和可靠性两者相互矛盾,无法适用于性能和可靠性要求都比较苛刻的环境,维护成本比较高。
RaiDB,其全称为RedundantArrays of Inexpensive Databases,也就是通过Raid理念来管理数据库的数据:通过将多个廉价的数据库实例组合到一个数据库阵列,提供比单台数据库更好的性能和容错性,同时隐藏分布式数据库的复杂性,提供给应用程序一个独立的数据库。
原理:在RaiDB中,控制器在数据库阵列的前面。应用程序发送请求到RaiDB控制器,控制器将请求分发给一组数据库。跟磁盘的Raid一样,RaiDB也有不同的级别或数据分发方案,如RaiDB-0、RaiDB-1、RaiDB-1-0、RaiDB-0-1等,用于提供不同的成本、性能、容错权衡。
优点:和磁盘的Raid一样,RaiDB也可以大幅提高数据的读写速度,并提供容错功能
缺点:只能支持将数据库中的表分割到不同的数据库实例上,数据表本身不能再进行分割了;不支持分布式的join;扩展性的提升取决于表的数目和各个表的负载情况。