这个星期客户问到一个很有趣的问题,是关于如何为第二个、第三个从库选择主库的。在一个数据库主从系统中,我们以前总是 把第一个数据库作为所有从库的主库,这很简单,也是目前实际执行的最佳方案,但我现在有点犹豫。我们知道,在线系统的从库重定向是复杂和困难的,尤其是在 凌晨三点面对不同情况的失败时,哪怕我们使用MMM或者其他工具。而把第一个从库作为第二、第三个,乃至其他所有从库的主库,则会使从库切换为主库的工作 变得简单,因为这时第二级从库不必做重定向。

新方案好的一面是,二级从库可以维持它们所有的SET MASTER TO,和日志位置等配置不变。这大大简化了主库故障转移的操作。这样在主库发生故障的时候,只需要进行简单的读写IP变更,而前一种方案则经常需要对真正 的主库做大量的故障排除工作。另外,在主库故障的情况下,该方案大大简化了数据库故障转移高可用性自动化工作。

但 是另一方面,它引入了第二个单点故障 - 第一个从库。在原来的方案中,可以通过简单的可读写声明和所有其他从库的重定向,来将任一台从库提升为主库。任何一台最下级节点的从库出问题都是很容易处 理的,只需要从应用的数据库池中去除掉有问题的从库即可。但是如果作为其他从库的主库,也就是第一台从库有问题,那么所有其他的从库都要重定向到主库或者 其他的从库。在这种情况下,由于所有的更新都是通过单点故障的第一台从库来传递的,所以实际上所有的从库将会一起无法得到新的数据。虽然,所有的读取操作 可以继续,应用依然可用(不同于主库不可用的情况,依然可读写),但由于读取的是老数据,很快就会成为一个极其严重的问题。

我不确定哪一种方案好,哪一种不好,但这是一个很值得思考的有趣问题。就现在来说我们还会继续使用简单的一主多从结构,并且不断思考如何去改进和简化这个方案。

另 一个相关的话题是多数据库系统中虚拟IP地址的问题。在这方面我们还没有最合适的方案,暂时在所有数据库系统中使用真实IP,即使这会使故障转移和IP切 换更加困难,特别是在读写分离的系统中。但是使用真实的IP能够使系统变得易于设置和管理,同时必须指出,方案的简单化会避免一些额外的故障可能,而实际 上我们很少遇到需要做故障切换的情况,目前的方案已经工作的很好了。但是另一方面不应忘记,我们致力于设计和搭建世界上最好、最快的系统。

转载于:https://blog.51cto.com/chinanetcloud/1037674

技术项目 - MySQL多从系统的主库选择相关推荐

  1. 仿微信查看系统图片缩略图选择多张图片

    最近做的项目有用到查看系统图片并选择多张图片的功能,网上搜索了一些源码运行起来,拖动一下缩略图列表就卡住了,都是没有考虑到OOM的原因.结合网上的一些LRUCACHE和ASYNCTASK资料,自己写了 ...

  2. SSM毕设项目基于Java技术的医院在线挂号系统s73ib(java+VUE+Mybatis+Maven+Mysql)

    SSM毕设项目基于Java技术的医院在线挂号系统s73ib(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

  3. 美团技术 mysql_美团MySQL数据库巡检系统的设计与应用

    巡检工作是保障系统平稳有效运行必不可少的一个环节,目的是能及时发现系统中存在的隐患.我们生活中也随处可见各种巡检,比如电力巡检.消防检查等,正是这些巡检工作,我们才能在稳定的环境下进行工作.生活.巡检 ...

  4. springboot毕设项目社区健康服务系统h9bpy(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目社区健康服务系统h9bpy(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HB ...

  5. JAVA毕设项目html5在线医疗系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

    JAVA毕设项目html5在线医疗系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql ...

  6. Java毕设项目共享充电宝系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目共享充电宝系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webs ...

  7. JAVA毕设项目公立医院绩效考核系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

    JAVA毕设项目公立医院绩效考核系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

  8. Java毕设项目大学生创业众筹系统(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目大学生创业众筹系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(We ...

  9. ssm毕设项目水果生鲜销售系统7826c(java+VUE+Mybatis+Maven+Mysql+sprnig)

    ssm毕设项目水果生鲜销售系统7826c(java+VUE+Mybatis+Maven+Mysql+sprnig) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HB ...

  10. springboot毕设项目在线智能办公系统bxl9i(java+VUE+Mybatis+Maven+Mysql)

    springboot毕设项目在线智能办公系统bxl9i(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HB ...

最新文章

  1. python提取文件名数字_在Python中从文件名提取扩展名
  2. 帝国cms让当前栏目显示不同样式(图文)
  3. c语言程序设计复习提纲,C语言程序设计复习提纲
  4. 获取IOS应用的子目录
  5. 遥感计算机分类有哪些,遥感数字图像的计算机分类.doc
  6. bluecam连接步骤说明_厂家详解旋片式真空泵使用说明
  7. 工信部:不得利用“携号转网”实施恶性竞争行为
  8. 非基元类型数据结构_Java数据类型–基元和二进制文字
  9. linux中vsftpd登陆慢卡问题解决方法
  10. 关于kafka中ISR、AR、HW、LEO、LSO、LW的含义详解
  11. 在线的棋牌类网络游戏java服务端实现
  12. PlayMaker 1.9 烦人的小提示
  13. 卓训教育:家庭教育的重要性,家庭教育的理念及基本方法
  14. 201606中通笔试题
  15. CNN-PS: CNN-Based Photometric Stereo for General Non-convex Surfaces 2018ECCV
  16. django 连接数据库 sqlite
  17. VSFTPD FTP服务器搭建手册
  18. 移动端开发的vconsole插件
  19. hdu 4433 locker
  20. MyBatis 简介及入门程序

热门文章

  1. html下拉菜单的某个值被选定,使用JavaScript在下拉列表中获取选定的值?
  2. iview render设置属性_iView 发布 3.4.0 版本,代号 BestLuck
  3. 使用PrinterJob进行分页打印
  4. maven打包,java内存竟然要设置16G(-Xmx16384m)
  5. checking for spandsp >= 3.0... configure: error: no usable spandsp; please install spandsp3 devel pa
  6. FreeSwitch命令:切换视频会议画面布局
  7. Dex Loader] Failed to load D:\adt-bundle-windows-x86_64-20190307\sdk\build-tools\28.0.3\lib\dx.jar
  8. MIPS指令集确实够精简,编译文件明显小
  9. AI连围棋都可以大胜,何况游戏
  10. mysql所选路径已经存在_Win10环境下安装压缩包版本MySQL-8.0.13