二、MySQL主从复制的应用场景
MySQL主从复制有利于数据库架构的健壮性、提升访问速度和易于维护管理。
1、主从服务器互为备份
主从服务器架构的设置,可以大大的加强数据库架构的健壮性。例如:当主服务器出现问题时,我们可以人工或自动切换到从服务器继续提供服务。
这类似nfs存储数据通过inotify+rsync同步到备份的nfs非常类似,只不过MySQL的同步方案,是其自带的工具。
*异步可能不一致:
1)找一台从库专门做备份,主出问题,备接管服务,把主的binlog拉过来补全数据
2)双写()
3)通过应用程序,写一个一分钟的短时日志,补全从库
4)把异步同步换成实时同步(谷歌开发半同步插件:如果主成功,备也成功,才算成功,还有效率问题,设置等待时间)
非人为的硬件,服务故障,对人为的执行drop,delete无能为力。
2、主从服务器读写分离分担网站压力
主从服务器架构可通过程序(php,java)或代理软件(mysql-proxy,amoeba)对用户(客户端)的请求实现读写分离,即通过在从服务器上仅仅处理用户的select查询请求,降低用户查询响应时间及读写同时在主服务器带来的压力,对于更新的数据(updata,insert,delete)仍然交给主服务器处理,确保主服务器和从服务器保持实时同步,如果网站是以非更新(以浏览器为主)为主的业务,如blog,www首页展示等业务,查询请求不较多,这是从服务器的读写分离负载均衡策略就很有效了,这就是传说中的读写分离数据库结构。
中大型公司:通过程序(php,java)
测试环境:代理软件(mysql-proxy,amoeba)
门户网站:分布式dbproxy(读写分离,hash负载均衡,健康检查)
3、根据服务器拆分业务独立并分担压力
可以把几个不同的从服务器,根据公司的业务进行拆分。例如:有为外部用户提供查询服务的从服务器,有DBA用来备份的从服务器,还有提供公司内部人员为访问的后台、脚本,日志分析及开发人员服务的从服务器。这样的拆分除了减轻主服务器的压力外。使得对外用户浏览、对内处理公司内部用户业务,及DBA备份业务互不影响。具体可以用下面的简单架构来说明:
逻辑图: