分布式MYSQL部署的可行方案
2014-11-15 17:42:05   来源:我爱运维网   评论:0 点击:

中国互联网的南北分割的特殊性,使得双通或多通机房、CDN大行其道,也加大了互联网企业的技术布署难度与要求。很多网站都设法使用静态或伪...

中国互联网的南北分割的特殊性,使得双通或多通机房、CDN大行其道,也加大了互联网企业的技术布署难度与要求。很多网站都设法使用静态或伪静态加缓存方式解决南北方互通,然而互动内容及个性化内容如论坛、博客、SNS、微博(TWITTER)等越来越多是不可逆转的互联网发展趋势,也就是说动态内容与网页互联网企业必须面对的问题。下面针对这种趋势,提出了互联网上使用最广泛数据库MYSQL的南北方分布式布署可行的解决方案,供大家参考。

1. MySQL跨越广域网的Master-Slave复制

 

在异地的数据中心建立MySQL的slave节点,进行主数据中心和附属数据中心的Master-slave replication跨广域网复制。这个方案的优点是:MySQL复制本身已经是一个非常健壮和成熟的技术,可以在大动态数据量的时候,获得更好的秒级别的实时性,实时性相对要高得多。

实现方法:通过VPN+SSH在两个机房建立互通链路连接,这样两个机房可以当成一个网络延迟稍微长一点、稍微不稳定的局域网。同理,基于这种链路的Solr (Lucene)复制,就是一种可以考虑的架构

当然,这种跨越广域网的效果,需要进一步验证,毕竟南北方的链路不稳定性与时延都较大,用户必须自己验证效果。若延迟平均在秒级别,偶尔出现分钟级别的延迟也可以接受,那么这种解决方案整体上已经好于缓存加上通知过期的方法。

 

2. MySQL 多中心Master-Master复制

这里说的MySQL 多中心Master-Master复制方案,是指数据中心A和数据中心B各自有自己的数据库,为避免命名上的冲突,一个中心的数据采用奇数编号,另外一个采用偶数(若中心数大于2的时候,可对某一大于中心总数的数字取模--典型的HASH算法)。如果从MySQL以及绝大多数的数据库角度,这样操作是比较方便的。简述如下:

假设A和B在初始时候的数据是一样的,最大编号(auto_increment的上一次给出值)是401。这个时候,只要简单的把两个数据库的auto_increment_increment设成2,
 

auto_increment_increment = 2


并且把A的数据库的表的AUTO_INCREMENT值设成一个比现在大得多的一个奇数,比如501,B设成502就好了。跳一下的好处是,可以不用停机,在一个机房操作完成的时候有足够的时间去操作第二个机房(只要那个机房的ID增长不要碰到502就好了)。从此A的id就按照503,505向上增长,而B的id开始按照502,504增长。

 

 

这个方案做ID切分以后,就为master-master replication做好了准备。之后两个中心可以相互实时互相复制了。

这个方案看上去比较完美,便用户也需要考虑:要复制好的、正确的信息是完全没有问题的,但实际上一个小bug或者一个不小心的配置,可能会让拖垮其他的所有数据库。而多中心Master-Master复制的方案在多于2个节点的时候,需要额外的设计。

相关热词搜索:mysql 部署

上一篇:Mysql 开发最佳实践
下一篇:最后一页

分享到: 收藏