注册 登录
MySQL社区 返回首页

nycle的个人空间 http://www.mysqlpub.com/?5653 [收藏] [复制] [RSS]

日志

mysqlfabric源码解析

热度 1已有 1745 次阅读2015-4-25 01:05 |个人分类:MySQL|系统分类:原创| mysqlfabric, 源码

  mysqlfabric实现了对主从架构的一些常规维护功能。那mysqlfabric靠谱吗?会不会有什么Bug?很多同学将信将疑。

  这里我将对mysqlfabric的基本运维的源码进行分析。 

 

  我们知道,mysqlfabric的常规运维有以下几个:

      1.mysql的主从切换(有可能一主多从)。

      mysqlfabric group my_group promote  (这里假设group_id为: my_group)

  2.mysql的主从切换,且指定某个从(slave)做为新的主(master)。  

      mysqlfabric group my_group promote --slave_id=xxx_server_id

  3.把某个服务的状态修改为SPARE(闲置、备用)状态。

    mysqlfabric server  set_status xxx_server_id spare


  这里我们以"mysqlfabric group my_group promote"这个方法为例进行分析,该方法的执行步骤如下(本来要画流程图,但发现很多步骤当中所调用的方法,都嵌套了四、五层以上,所以还是直接用文字来描述,同时把源码中的方法调用过程进行简单描述):

  1.从多个slave中找出可以成为新的master的最佳候选者(candidate)。

  即_do_find_candidate方法:找出相比于master延迟最小的slave,成为master,即最佳侯选者。当然这个slave要满足:开启binlog, gtid,log_slave_updates。同时复制的slave status不能有出错信息。


  2.校验最佳候选者是否满足成为新master的所有条件(注:上面的"2.mysql的主从切换,且指定某个从(slave)做为新的主(master)"实际上就是从这一步直接开始,即有指定slave_id时,就不需要执行获取最佳侯选者的步骤了)。

  即_check_candidate_switch方法。


  3.设置master为只读状态。

  该步骤的方法调用过程:_block_write_switch---->_do_block_write_master(设置read_only,secondary,以及group的master_uuid为None)。


  4.让候选者的数据追赶上master(就是我们常说的追数了~)。

  该步骤的方法调用过程:_wait_slaves_switch---->_utils.synchronize(server, master)---->_replication.sync_slave_with_master(slave, master, timeout=0)---->wait_for_slave_gtid(slave, master_gtids, timeout)


  5.让除了候选者之外的slave的数据追赶上master。

  该步骤的方法调用过程:_wait_slaves_switch---->_do_wait_slaves_catch(group_id, master, [slave_uuid])---->_utils.synchronize(server, master)---->_replication.sync_slave_with_master(slave, master, timeout=0)---->wait_for_slave_gtid(slave, master_gtids, timeout)


  6.主从切换。

  即_change_to_candidate方法:(1.清空新主的复制属性,并设置为read_write 2.把其他的相关server重新指到新master)---->_utils.switch_master(server, master)(停slave,指向新master,设置slave为read_only,启动slave)---->_replication.switch_master(真正进行指向新master)


  总结:fabric在数据库运维这端的逻辑控制还是比较完善,大家可以放心使用。

  但是mysql connector for java的sdk,那还是有很多坑的,各位在使用过程中要测试充分,小心使用哦。

全部作者的其他最新日志

发表评论 评论 (1 个评论)

回复 kider 2015-6-16 22:25

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-4-29 08:16 , Processed in 0.044140 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部