日期:
来源:架构师成长之路收集编辑:主从
看到这个标题,不妨假设自己在面试,当面试官问你这个问题的时候,你该如何回答?简单主从
简单主从方案
这种方案部署简单,自己在业务代码里面区分主从数据库,在业务简单数据规模小的情况下,维护成本也比较低,常见于初创公司。据我所知,赶集网最初就是采用这种方案。带有中间件的数据库同步方案
带有中间件的主从同步
程序连接时使用同样的连接字符串,程序中也不用区分读写情况,dbproxy一般会由dba维护。这种部署模式也存在一定问题。例如,写后立即读,如果主从同步没有完成,那么可能读取不到数据。解决方案有两个:1. dbproxy判定当前是写流量后,后续n毫秒内的读请求走主库 2. dbproxy判定当前流量是写流量后,同一连接后续所有的流量走主库。百度的数据库架构大部分都是这种模式。mysql-mmm(Master-Master Replication mananger for mysql)
mmm解决方案
高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性。Monitor节点是单点,可以结合Keepalived实现高可用。mha(Master High Availability)
mha部署方案
在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。