一、(多)单库结构
这个恐怕是最最简单的一种方案了,完全没有数据一致性问题。最大的缺点是无法容灾,并且只能承受较小的压力,不管压力来自读或者写。不过在分布式数据层解
决方案目不暇接的今天,单库结构可以拓展成多单库结构来平分压力。数据库可以从业务上先进行垂直拆分,将关联性较强的表放在一个库中,将数据变化较小的表
也放在一个库中;其次是将读写频繁的表进行水平拆分,以某字段值为基础,根据业务需求来选取适当的表路由算法。
(多)单库结构是除了环状结构之外所有复杂结构的基础,只有在此基础上合理分布数据,才能为高性能打好基础。其它数据库结构,只是更好地拓展了(多)单库结构而已。
二、MS结构
MS江湖人称主备结构。优点有两个,读写分离和实时备份。缺点也有两个,数据一致性难以保障和切换麻烦。MS结构非常适合读多写少的应用场景(比如说论坛、博客)。
从容灾的角度讲,主库和备库的一致性一定要保证。数据一致性不用多说,硬件配置和MySQL版本、各种参数配置最好都要一样,这样才能保证出问题时应用程 序能够平滑地从主库切换到备库上。但是从性能角度来看,主备不一致某些时候是可以容忍的。比如说,主备库上相同的表有不同的索引。此时将查询条件不同的 select语句路由到相应的库上去执行,应用得到结果集的时间将会大大缩短。
三、MM结构
MS的切换是个弱点,而且切换所带来的麻烦会随着备库的增多而逐步上升。不过好在很多应用都不需要多个备库的数据库结构。如果备库只是用来实时备份数据和承担小部分读压力,那么MM结构将会是取代MS结构的不二之选。
MM就是传说中的主主结构。MM结构中的某一个库加了read-only参数,用来确保一个时间点只存在一个可写的数据库。优点是切换迅速,在应用程序足够强壮的前提下,甚至可以做到数据库宕机时应用不停止服务。缺点也很明显,拓展性不如MS结构强。
四、复合结构
在(多)单库结构的时候我已经提到,目前流行的复杂结构数据库全部是以(多)单库结构为基础,将单点替换为MS或MM结构而形成的。
将(多)单库结构进行一定程度的替换,我们就可以获得目前流行的大部分MySQL架构了。
在资金投入有限的情况下,DBA需要在高性能、高稳定、可拓展这三个要素中玩跷跷板。
如何定位这个平衡点,还是要根据企业的现状和业务要求进行具体分析。