MySQL的同步相当简单,但是怎么用好同步,根据业务需求为应用层提供高性能、高可用是一个值得探讨的问题。下面讨论一下几个常见MySQL数据库架构的优缺点。
一、(多)单库结构
这个恐怕是最最简单的一种方案了,完全没有数据一致性问题。最大的缺点是无法容灾,并且只能承受较小的压力,不管压力来自读或者写。不过在分布式数据层解决方案目不暇接的今天,单库结构可以拓展成多单库结构来平分压力。数据库可以从业务上先进行垂直拆分,将关联性较强的表放在一个库中,将数据变化较小的表也放在一个库中;其次是将读写频繁的表进行水平拆分,以某字段值为基础,根据业务需求来选取适当的表路由算法。
![](https://img-my.csdn.net/uploads/201206/06/1338964206_7748.jpg)
二、MS结构
MS江湖人称主备结构。优点有两个,读写分离和实时备份。缺点也有两个,数据一致性难以保障和切换麻烦。MS结构非常适合读多写少的应用场景(比如说论坛、博客)。
![](https://img-my.csdn.net/uploads/201206/06/1338964226_6481.jpg)
三、MM结构
MS的切换是个弱点,而且切换所带来的麻烦会随着备库的增多而逐步上升。不过好在很多应用都不需要多个备库的数据库结构。如果备库只是用来实时备份数据和承担小部分读压力,那么MM结构将会是取代MS结构的不二之选。
MM就是传说中的主主结构。MM结构中的某一个库加了read-only参数,用来确保一个时间点只存在一个可写的数据库。优点是切换迅速,在应用程序足够强壮的前提下,甚至可以做到数据库宕机时应用不停止服务。缺点也很明显,拓展性不如MS结构强。
![](https://img-my.csdn.net/uploads/201206/06/1338964246_8413.jpg)
四、复合结构
在(多)单库结构的时候我已经提到,目前流行的复杂结构数据库全部是以(多)单库结构为基础,将单点替换为MS或MM结构而形成的。
![](https://img-my.csdn.net/uploads/201206/06/1338964261_3584.jpg)
![](https://img-my.csdn.net/uploads/201206/06/1338964278_7889.jpg)
如何定位这个平衡点,还是要根据企业的现状和业务要求进行具体分析。