没有最好,只有最适合,根据实际需求和条件选择最适合自己业务系统的就是最好的。
1、MySQL主从模式
传统Master-Slave模式,可实现读写分离,数据备份;
局限:需手动切换数据库
2、MySQL主主模式+keepalive
两套DB互为主从,结合配置keepalive,故障自动切换,以实现高可用;
4、MySQL之MMM
MMM:Master-Master replication manager for MySQL
一套支持双主故障切换和双主日常管理的脚本程序
特性:实现故障切换和多slave的read负载均衡
局限:MMM无法完全保证数据一致性;monitor为单节点(可以结合keepalive实现高可用);不支持分片
适用:对数据一致性要求不高,对业务可用性要求高
3、MySQL之MHA
MHA:Master High Availability
实现:分MHA Manager和MHA Node,一般一主多从,主down备同步主数据后升级为主;
特性:故障切换时间0-30s
局限:如果主机硬件故障,则只进行故障转移,可能丢失最新数据;不支持分片
5、MySQL Cluster
官方集群方案,支持通过自动分片支持读写扩展,实时备份冗余数据,高可用;
NDB Management Server:管理其他节点,配置、停启node;
SQL Node:集群访问入口
Data Node:数据分片存储
局限:修改表引擎为NDB,只支持Read Committed事务,即只可读事务提交后的数据,事务进行中的数据被锁,无法查询;
PS:四种事务隔离级别:
Serializable(串行化):事务串行化执行,事务只能一个接着一个地执行,而不能并发执行。
Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。
Read Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。
Read Uncommitted(读未提交数据):一个事务在执行过程中可以看到其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。
6、MySQL Fabric
实现:通过Fabric的connector组件连接到主备服务器集群,主down备自动升级为主;
特性:高可用、以数据分片实现可扩展和负载均衡
局限:备库通过同步复制(同传统的主从复制)实现数据冗余;事务和查询只支持在同一分片内,更新的数据不能跨片,查询返回的数据页不能跨片。
7、Galera Cluster
号称世界上最先进的开源数据库集群方案
特性:多服务器同时读写(无延迟复制、无丢失);主down备自动接管;新增服务器时数据自动复制。
局限:对网络传输和并发有一定消耗,各服务器数据全冗余,不支持的SQL:LOCK / UNLOCK TABLES / GET_LOCK(), RELEASE_LOCK()…不支持XA Transaction
实现方案:
Galera Cluster for MySQL
Percona XtraDB Cluster 较成熟
MariaDB Galera Cluster
8、推荐尝鲜TiDB