MYSQL主从复制和读写分离_第1页
MYSQL主从复制和读写分离_第2页
MYSQL主从复制和读写分离_第3页
MYSQL主从复制和读写分离_第4页
MYSQL主从复制和读写分离_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据存储层的技术分享--触龙01架构的组成〔了解〕0203架构的五层模型〔了解〕04数据的主从复制和读写别离Contents目录05架构的演变--工程案例分享〔了解〕一.架构的组成硬架构软架构粗略划分(非标准)1.根据用户的地域分布选择合造的机房2.根据设定的网站并发目标选择带宽3.根据技术团队的能力划分效劳器,如:代理效劳器、图片效劳器、WEB效劳器、缓存效劳器、数据库效劳器、应用效劳器、日志效劳器、监控效劳器等1.根据流量入口和营销重点选择开发方向:PC端、M端3.选择适宜的框架:第三方或自主研发2.选择适宜的语言:Java、php、.net、C/C#/C++、Python、javascript、Ruby 等,或者是它们的某些组合4.结合硬架构的效劳器划分和开发语言实现负载均衡、缓存、动静别离、数据库集群和库表散列、分布式计算等............没有固定的架构,架构是一个逐步演变的过程!二.架构相关概念负载均衡:(LoadBalance)集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处 理器系统,按功能和结构可以分为高可用性集群 High-availability(HA)clusters、负载均衡集群Load

balancingclusters、高性能计算集群High- performance(HP)clusters。架构知识集群技术的一种,通过负载均衡器根据某种算法合理将计算压力分配到集群中的每一台计算机上,以减轻主效劳器的压力,降低对主效劳器的硬件和软件要求。三.架构五层模型Report层:基于监控层、各业务层生成的各类报表,以辅助决策者进行决策,如BI等Monitor层:监控架构系统各软硬件及应用程序的运行状态、网络效劳、占用资源,并根据设定标准完成报警、故障分析、流量分析、入侵检测等APP层:参与业务处理的被封装成模块的应用程序〔如Auth模块、User模块、DB模块、Cache模块、Lookup模块、Log模块、根据不同平台处理不同业务的各种模块等等〕Components层:支撑系统运行,保证架构系统业务处理的完整性〔如Nginx、Apache、Mysql、Tomcat、PHP、Java、Python、JS、Redis、Mongo、Memcache等〕OS层:架构系统的根基〔如操作系统、效劳器间的网络通信系统、软/硬防系统等〕四.MYSQL的主从复制和读写别离4.1.MYSQL主从复制原理:整体上来说,复制有3个步骤:(1)master将改变记录到二进制日志(binarylog)中(2)slave将master的binarylogevents拷贝到它的中继日志(relaylog);(3)slave重做中继日志中的事件,将改变反映它自己的数据。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave〔Sql进程和IO进程〕,另外一个进程在Master〔IO进程〕上。MYSQL主从配置流程略它的缺点是:1、Slave实时性的保障,对于实时性很高的场合可能需要做一些处理2、高可用性问题,Master就是那个致命点(SPOF:Singlepointoffailure)四.MYSQL的主从复制和读写别离4.2.MYSQL主从复制常见架构拓扑图:〔“一主一从”、“一主多从”、“双主”、“多级复制”和“多主单向环形结构”〕四.MYSQL的主从复制和读写别离4.3.MYSQL主从复制的延迟原因:延迟原因:

主库多线程并发更新从库单线程串行更新1、mysql的主从复制都是单线程的操作,当主库的TPS并发较高时,产生的DML和DDL数量超过slave一个sql线程所能承受的范围,就会产生延时2、slave的大型SQL查询语句产生了锁等待四.MYSQL的主从复制和读写别离4.4.MYSQL主从复制的延迟解决方案:使用数据库缓存技术:在写入数据库的同时写缓存,数据先从缓存读再读数据库01WEBSERVERAPACHE/NGINX/LIGHTTPD应用效劳器Mysql主库Mysql从库MemcacheReidsMangoHBase四.MYSQL的主从复制和读写别离4.5.MYSQL主从复制的延迟解决方案:使用第三方插件:transfer、relayfetch、MYSQLProxy等例:transfer

02Transfer是一个主从多线程同步工具,直接patch在MySQL中,保证从库无延迟,使得应用能够直接从从库上读数据。使用transfer以后,Master和Transfer主从关系,Transfer和Slave是Client-Server关系!四.MYSQL的主从复制和读写别离4.6.MYSQL读写别离常见方法:〔1〕.基于程序代码内部实现:在代码中对select操作分发到从库;其它操作由主库执行;这类方法也是目前生产环境应用最广泛优点是性能较好,因为在程序代码中实现,不需要、增加额外的设备作为硬件开支;缺点是需要开发人员来实现。〔2〕.基于中间代理层实现:代理中间层将前台应用的连接请求转发给后台的数据库,并且通过脚本实现复杂的连接控制和过滤,实现数据库的读写别离。对于应用而言只需要连接到代理监听的端口即可,不关心后台的效劳Mysql常见的中间层代理有MySQLProxy,Atlas、Amoeba等四.MYSQL的主从复制和读写别离4.6.1.基于中间层代理实现MySQL读写别离之MySQLProxy:mysqlMySQLProxy是基于MySQLClient和MySQLServer之间的代理程序,能够完成对Client所发请求的监控、修改。从Client角度看,通过Proxy访问Server和直接访问Server没有任何区别。对于既有的程序而言,只要把直接被访问的Server的IP地址和端口号换成Proxy的IP地址和端口号就可以。MysqlProxy通过LUA脚本中预先实现的6个方法实现对于后端mysql数据库效劳器的监控和操作。1.connect_server()2.read_handshake()3.read_auth()4.read_auth_result()5.read_query()6.read_query_result()四.MYSQL的主从复制和读写别离4.6.2.基于程序代码实现MySQL读写别离:根本原那么:在代码操作数据库时进行路由分类, 更新操作主库,查询操作分为库。四.MYSQL的主从复制和读写别离4.6.2.CI框架实现MySQL读写别离:也可在数据库封装的底层操作类〔DB_driver〕里完成读写别离,但建议不要,因为会破坏原生态框架结构!五.架构的演变--工程案例分享5.1.架构的演变史:(下次单独分享)第一步:物理别离

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论