MySQL架构由小变大的演变过程
2018-06-17 23:24:45来源:未知 阅读 ()
假设一个网站(discuz)从最开始访问量很小做到日pv千万,我们来推测一下它的mysql服务器架构演变过程。
第一阶段
网站访问量日pv量级在1w以下。单台机器跑web和db,不需要做架构层调优(比如,不需要增加memcached缓存)。此时,数据往往都是每日冷备份的,但有时候如果考虑数据安全性,会搭建一个mysql主从。
第二阶段
网站访问量日pv达到几万。此时单台机器已经有点负载,需要我们把web和db分开,需要搭建memcached服务作为缓存。也就是说,在这个阶段,我们还可以使用单台机器跑mysql去承担整个网站的数据存储和查询。如果做 MySQL 主从,目的也是为了数据安全性。
第三阶段
网站访问量日pv达到几十万。单台机器虽然也可以支撑,但是需要的机器配置要比之前的机器好很多。如果经费允许,可以购买配置很高的机器来跑mysql服务,但是并不是说,配置翻倍,性能也翻倍,到了一定阶段配置增加已经不能带来性能的增加。所以,此阶段,我们会想到做mysql服务的集群,也就是说我们可以拿多台机器跑MySQL。但,MySQL的集群和web集群是不一样的,我们需要考虑数据的一致性,所以不能简单套用做web集群的方式(lvs,nginx代理)。可以做的架构是,mysql主从,一主多从。为了保证架构的健壮和数据完整,主只能是一个,从可以是多个。
还有一个问题,我们需要想到,就是在前端web层,我们的程序里面指定了MySQL机器的ip,那么当mysql机器有多台时,程序里面如何去配置?discuz,其实有一个功能,支持MySQL读写分离。即,我们可以拿多台机器跑MySQL,其中一台写,其他多台是读,我们只需要把读和写的 IP 分别配置到程序中,程序自动会去区分机器。当然,如果不使用 discuz 自带的配置,我们还可以引用一个软件叫做 mysql-proxy, 使用他来实现读写分离。它支持一主多从的模式。
第四阶段
网站访问量日pv到几百万。之前的一主多从模式已经遇到瓶颈,因为当网站访问量变大,读数据库的量也会越来越大,我们需要多加一些从进来,但是从的数量增加到数十台时,由于主需要把bin-log全部分发到所有从上,那么这个过程本身就是一件很繁琐的事情,再加上频繁读取,势必会造成从上同步过来的数据有很大延迟。所以,我们可以做一个优化,把mysql原来的一主多从变为一主一从,然后从作为其他从的主,而前面的主只负责网站业务的写入,而后面的从不负责网站任何业务,只负责给其他从同步bin-log。这样还可以继续多叠加几个从库。
第五阶段
网站访问量日pv到1千万的时候,我们发现,网站的写入量非常大,我们之前架构中只有一个主,这里的主已经成为瓶颈了。所以,需要再近一步做出调整。比如,我们可以把业务分模块,把用户相关的单独分离出来,把权限、积分等也可以分离出来单独跑一个库,然后再做主从,也就是所谓的分库。当然也可以换一个纬度,把访问量或者写入量大的表单独分离出来,跑在一台服务器上,也可以把一个表分成多个小表。这一步操作,涉及到一些程序上的改动,所以需要事先和开发同事做好沟通和设计。总之,这一步要做的就是分库分表。
写在后面
再往后发展,继续把大表分小表即可。 而国内阿里淘宝网站的数据量是巨量的,他们的数据库全部都是 MySQL,他们的 MySQL 架构就是遵循分库分表这个原则的,只不过他们划分规则会有很多纬度,比如可以根据地域划分,可以根据买家、卖家划分,可以根据时间划分等等。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MAC ox下配置mysql
下一篇:MySQL常见错误解决方案
- MySQL replace函数怎么替换字符串语句 2020-03-09
- PHP访问MySQL查询超时怎么办 2020-03-09
- mysql登录时闪退 2020-02-27
- MySQL出现1067错误号 2020-02-27
- mysql7.x如何单独安装mysql 2020-02-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash