mysqlfabrci常规运维的源码分析。

  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,那还是有很多坑的,各位在使用过程中要测试充分,小心使用哦。

  

时间: 2024-10-18 03:18:27

mysqlfabrci常规运维的源码分析。的相关文章

DataMatrix二维条码源码分析检测识别图像位置

发布时间:2014-10-31 DataMatrix的代码结构和QR码基本相同: 其中Detector的功能还是从原始图像中找出符号码的部分,并且进行透视转换纠正扭曲. 其解码流程与QR码差不多,关键在于怎么从原始图像中取出真实的符号图像.在上文中说过,George Wolberg写的Digital Image Warping一书中PerspectiveTransform方法可以建立起两个四边形之间的映射关系.然后就通过每一点的映射关系将原图中可能不规则的符号图形纠正为规则的矩形. 在QR码中D

二维码扫描 zxing源码分析(三)result、history部分

前两个部分的地址是:ZXING源码分析(一)CAMERA部分  . zxing源码分析(二)decode部分 下面我们来看第三部分 result包下面有很多的类,其中的核心类是 com.google.zxing.client.android.result.ResultHandlerFactory:这个简单的工厂类,是整个result的所有的类的入口,我们就从这个类开始 ResultHandlerFactory: 这个类中有两个方法,分别是makeResultHandler()和parseResu

二维码zxing源码分析(四)wifi部分

前三个部分的地址是:ZXING源码分析(一)CAMERA部分  . zxing源码分析(二)decode部分.zxing源码分析(三)result.history部分 前面三篇文章基本上已经把zxing的核心源码看的差不多了,现在我们在分析它所包含的功能的部分,其实history也是属于这一部分的,但是放在第三篇说了 核心类: com.google.zxing.client.android.wifi.WifiConfigManager wifi管理类,通过它用解析后的结果进行管理 com.goo

插件开发之360 DroidPlugin源码分析(五)Service预注册占坑

请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52264977 在了解系统的activity,service,broadcastReceiver的启动过程后,今天将分析下360 DroidPlugin是如何预注册占坑的?本篇文章主要分析Service预注册占坑,Service占了坑后又是什么时候开始瞒天过海欺骗AMS的?先看下Agenda: AndroidMainfest.xml中概览 Service中关键方法被h

Docker源码分析(二):Docker Client创建与命令执行

1. 前言 如今,Docker作为业界领先的轻量级虚拟化容器管理引擎,给全球开发者提供了一种新颖.便捷的软件集成测试与部署之道.在团队开发软件时,Docker可以提供可复用的运行环境.灵活的资源配置.便捷的集成测试方法以及一键式的部署方式.可以说,Docker的优势在简化持续集成.运维部署方面体现得淋漓尽致,它完全让开发者从持续集成.运维部署方面中解放出来,把精力真正地倾注在开发上. 然而,把Docker的功能发挥到极致,并非一件易事.在深刻理解Docker架构的情况下,熟练掌握Docker C

GNU GRUB 2.00 源码分析笔记,持续更新

前言 很多运维类书籍或文章仅从系统管理者的角度讲解了 grub 的安装以及使用, 本篇博文则从 gnu grub 2.00 的源码入手,从开发者,以及系统底层运行机制的角度,分析 grub 是如何作为跨平台的"全面统一的引导加载程序",来引导操作系统,加载 Linux 内核的过程等等, 部分内容参考了<深度探索 Linux 操作系统>一书中相关的内容(ISBN 978-7-11143901-1 )以及 gnu grub 项目官方站点的文档,并且加入自己分析源码时的笔记. (

nginx源码分析--GDB调试

利用gdb[i]调试nginx[ii]和利用gdb调试其它程序没有两样,不过nginx可以是daemon程序,也可以以多进程运行,因此利用gdb调试和平常会有些许不一样.当然,我们可以选择将nginx设置为非daemon模式并以单进程运行,而这需做如下设置即可: daemon off; master_process off; 这是第一种情况: 这种设置下的nginx在gdb下调试很普通,过程可以[iii]是这样: 执行命令: [email protected]:/usr/local/nginx/

【计算机视觉】OpenCV人脸识别facerec源码分析2——LBPH概述

人脸识别 从OpenCV2.4开始,加入了新的类FaceRecognizer,我们可以使用它便捷地进行人脸识别实验.其源代码可以在OpenCV中的opencv\modules\contrib\doc\facerec\src下找到. 目前支持的算法有: Eigenfaces特征脸createEigenFaceRecognizer() Fisherfaces createFisherFaceRecognizer() Local Binary Patterns Histograms局部二值直方图 cr

OpenStack Kolla 源码分析 --Ansible

OpenStack Kolla 源码分析 –Ansible Kolla介绍 Kolla项目利用Docker.Docker-Compose.Ansible来完成部署OpenStack,目前Kolla已经能够完成一个all-in-one的开发环境的部署.从Kolla项目spec中的描述来看,主要是利用Docker容器的隔离性来达到OpenStack的原子升级.回退在升级.整个升级.回退的过程更容易控制影响范围,降低整个OpenStack的运维复杂度.Kolla 提供了生产级别的 OpenStack