设为首页 收藏本站
查看: 445|回复: 0

[经验分享] Mysql Replication基本原理(一)

[复制链接]

尚未签到

发表于 2018-10-4 06:00:10 | 显示全部楼层 |阅读模式
Replication架构通常由一个master和一个或者多个slaves构成,master接收应用的writes操作(事务中的read、write操作均有master处理),slaves接收read操作。在master上发生的数据变更,都将会复制给slaves,从直观而言,replication架构解决了:1)数据多点备份,提高数据可用性 2)读写分流,提高集群的并发能力。(并非是负载均衡)3)让一些非实时的数据操作,转移到slaves上进行。  下文中提到的“变更操作”为“insert”、“update”、“delete”等,与MySQL中的“update events”、“事务操作”、“writes”同义。
  Replication具有如下优点:
  1)扩展:将负载分布在多个slaves上以提高性能,所有的writes以及事务中的read操作都将有master处理,其他reads将转发给slaves;对于“读写比”较高的应用,replication可以通过增加slaves节点来提高并发能力;因为write只能在master上提交,因此架构扩展对提升write并发能力并不明显,对于writes密集性应用我们应该考虑其他架构。
  2)数据安全:slave可以中断自己的replication进程,这不会打断master上的数据请求,所以可以在slave上运行backup服务,定期全量backup是保护数据的手段之一。(如果在master上执行backup,需要让master处于readonly状态,这也意味这所有的write请求需要阻塞)。
  3)分析:数据在master上创建,那么数据分析可以在slave上进行,这将不会影响master的性能。利用mysql做数据分析(或者数据分析平台的源数据),通常都是将某个slave作为数据输入端。
  4)远距数据分布:如果master的物理位置较远,你可以在临近需求的地方部署slaves,以便就近使用数据,而不需要总是访问远端的master,这在数据分析、数据备份与容灾等方面有很大帮助。
  MySQL架构的演变分多个阶段,目前基于replication架构模式的更高级架构设计有“MySQL Fabric”和“MySQL Cluster”。本文主要讲解基本的replication模式,如下为replication与Fabirc、Cluster的区别,以便我们做技术选型:
  1、MySQL Fabirc
  Farbic由replication基础特性和一些扩展框架构建而成,用于管理MySQL Servers Farms,与基本的replicaiton相比,它实现了2个核心的特性:HA和sharding。Fabric集群中任何时候只有一个Primary(即master),其他的实例为Secondaries(即slaves);通过使用replication,将数据在多个节点上备份,HA总是保持集群的数据可用性。如下特性是replication所不具备的:
  1)故障检测和角色迁移(Failover):Fabric进程用于监控集群中的所有节点,如果发现primary失效,稍后他将从Secondaries中选择一个“数据最新”的节点,并提升为primary;此后其他的secondaries将从新的priamry上同步数据变更操作。Connectors(比如Connector/J客户端)发现primary故障时也会通知Fabirc,那么Fabric将通知信息作为决策的一部分来判定priamry的状态。这个特性简称为“自动Failover”,是replication架构中必备的手段之一。
  2)数据库请求路由(Router):当Fabric提升一个新的primary后,它将会更新state store(存储replication的节点状态等),此后Connectors将会获取新的state数据并在客户端本地cache。因此,application不需要时刻关注(aware)集群中servers拓扑结构的变化,只需要根据state cache中的server状态,将writes发送给相应的primary即可。这种特性有Connectors客户端与与Fabric共同实现,在普通的replication架构中,客户端自动角色路由是无法完成的。如果cache中拓扑不是最新的,application的操作异常将会反馈给Fabirc,参考1)。
  Fabirc支持sharding,对较大规模的数据可以非常便捷的在集群中分布而无需太多人工干预,我们可以简单的认为Fabric是replication模式的完善,支持自动Failover。对于互联网应用,Fabric架构简单而且有效,是首选方案。
  2、MySQL Cluster
  相对于Fabirc,MySQL Cluster支持更大规模的数据,其架构模式和原理也更加复杂。Cluster是一个易于扩展、实时的、ACID兼容的事务性数据库,支持“全分布式”、“多Master”架构,无单点问题;MySQL Cluster可以部署在普通的商业机器上,多节点水平扩展、Server间数据自动sharding和负载均衡,用于服务read、write都密集的应用,可以使用SQL和NOSQL接口访问数据。Cluster的架构思想与Hadoop非常类似,它设计的前提是“认为每个Node都是易于出错的”、集群规模巨大、多租户,所以它提供了数据备份机制、自动迁移、自动Failover等特性,来保证可用性、健壮性。
  MySQL Cluster使用了一个插件式的存储引擎,与MySQL 存储引擎(InnoDB、MySAM)架构有很大不同,我们在此不做详细介绍,只需要知道它的核心特性为:数据集并不是存储某个特定的MySQL实例上,而是被分布在多个Data Nodes中,即一个table的数据可能被分散在多个物理节点上,任何数据都会在多个Data Nodes上冗余备份。任何一个数据变更操作,都将在一组Data Nodes上同步(严格意义上的同步,synchronous,二阶段提交?)以保证数据的一致性。
  由此可见,Replication架构简单、易于管理;Fabric是Replicaiton模式的完善和补充,增加了自动Failover和sharding机制,以支撑更大规模的数据访问,减少人工干预;Cluster是一个全分布式架构,是面向大规模数据存储的解决方案。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-611488-1-1.html 上篇帖子: Mysql Replication运维与实施(三) 下篇帖子: mysql数据库yum安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表