第十章:第33节 MySQL进阶篇——mysql的读写分离

更新于:2017-09-22 11:32:17

当平台流量涨起来了,数据请求已远超MySQL服务器的极限,在一台MySQL服务器上我们再怎么优化也于事无补,这时就要考虑花钱升级硬件或者多买几台服务器做集群。


假如一个平台现在有两个MySQL服务器,有朋友会有疑问:“我怎么使用这两个MySQL呢?我插入数据进哪个MySQL?是不是要把数据表均分到两个MySQL中?”初学者每个人都会有这样的想法。其实不是这样的,每个MySQL中的表还是一样的表,只是有的mysql服务器只负责用户读,有的只负责用户写,写服务器数据同步到读服务器上,这就是MySQL解决大流量的方案——“读写分离”。


读写分离(Read/Write Splitting),基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。


1)Mysql服务器内部支持复制功能,仅仅需要通过配置完成下面的拓扑结构。怎么配置可参考》》》

一主多从典型结果:

1.png


读服务器要远远多于写服务器。

2)读写分离,负载均衡


MySQL可以实现主从复制,我们通常还需要找一个中间软件来自动实现“读写分离”。

1.png


有两个软件可以实现读写分离功能,MySQL proxyAmoeba(变形虫)


MySQL Proxy是MySQL官方提供的,它有一项强大功能是实现“读写分离”,基本原理是让主数据库处理写方面事务,让从库处理SELECT查询。


Amoeba for MySQL是一款优秀的中间件软件,同样可以实现读写分离,负载均衡等功能,并且稳定性也高于MySQL Proxy。


因为楠神也没有实际操作过,就不做介绍了。假如以后MySQL有用到“读写分离”功能,大家可以去网上搜“MySQL proxy”或“Amoeba”相关教程(以后楠神用到了也会出相关教程),会有很多值得参考的内容。“MySQL proxy”和“Amoeba”说白了就是一软件,无非都是些怎么教你配置这两个软件,不会太难的。


其他说明:


不光MySQL需要做集群,如果一个网站流量很高,像Apache服务器也受不了,也得做负载均衡,使用多个服务器分散接收http请求。


作为一名初学编程的码农,我们首要的目的就是要学会编程,能用编程语言开发功能,开发出各种平台来。有了这种水平,作为一名码农是合格了。但要成为高级开发师,可不仅仅是会写代码这么简单。你写的平台能撑得住大流量,这才是合格的开发师。那这就要求不仅会写代码,还会懂得做架构,要有扎实的计算机底子,懂得各种优化手段,各种软件的搭配架设。


题外话:


目前招聘PHP的公司大致分为两种:


一种是专门为其他公司开发软件(包括网站PHP程序),把软件当成商品卖。这种公司楠神喜欢叫外包公司(很多公司不承认自己是外包公司,但它们的性质是一样的,“我写程序你来卖”),它们招人要求都很低的,只要会写代码就要,工资当然也不高,人员流动特别大,干不了多长时间就走人,不适宜长久发展。


由于程序员水平低,写得东西特别烂(楠神是深有感触,改过外包公司写的代码,真的是折磨)。对于初学编程人员去这些公司是不错的选择,短期能力提升很快。外包公司很能学东西,接触的各种技术比较多,对功能开发还不特别好的人可以去磨练下。在外包公司待六个月足矣,再长就没什么意义,程序员就彻底变成流水线的工人,技术不会有特别大的提升。它们那只让程序员写功能,目的只要能出功能就行,它们自己又不用写的软件,想一想这样的软件能好到哪去!不会有任何的优化,有点流量就撑不住。高深点的技术学不到(用不到),这样的公司待久了会发现没有任何成就感,而且还会死累死累的,一个项目接一个项目让你完成。


第二种专门为自家公司开发平台(楠神一直找的是第二种公司),自己运营,这样的公司对程序质量要求高(前提要有流量,流量不高烂程序也能跑起来)。比去外包公司更能学习深的技术,有助于成为技术大牛,拿高薪,可能还不累,以后跳槽也会被其他公司争抢。哈哈,当然平台越大,越不好进,对学历都有要求。能力不行的话,人家也不会把重要的开发任务交给你,只能在某一块打个杂,这样反而偏科,不利于技术的全面进步。


所以,只需做个码农什么的,可以去这两种公司,做个底层程序员。想要做大神就要去大平台历练下。