当前位置: 首页 > news >正文

《Mycat分布式数据库架构》之故障切换

文章目录

        • 1、原理
        • 2、配置验证

前文回顾:
《Mycat分布式数据库架构》之原理及架构
《Mycat分布式数据库架构》之搭建详解
《Mycat分布式数据库架构》之配置详解
《Mycat分布式数据库架构》之数据切分和读写分离



1、原理

Mycat会定期对一个dataHost里的所有writeHost和readHost节点发起心跳检测。在正常情况下,Mycat会将第一个writeHost作为写节点,所有的DML SQL都会发送到此节点,若Mycat开启了读写分离,则查询节点会根据读写分离的策略发往readHost(和writeHost)执行。

在一个dataHost里面配置两个或多个writeHost的情况下,如果第一个writeHost宕机,则Mycat会在默认的3次心跳检查失败后,自动切换至下一个可用的writeHost执行DML SQL语句,并在conf/dnindex.properties文件里记录当前所用的writeHost的index(第1个为0,第2个为1,以此类推)。

注:conf/dnindex.properties 这个文件不可删除和擅自改动。

在这里插入图片描述


2、配置验证

故障转移主要是依靠配置schema.xml文件来实现,具体配置如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="mycats" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>  
 
        <dataNode name="dn1" dataHost="host1" database="oracle11" />  
        <dataHost name="host1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="oracle" dbDriver="jdbc" switchType="1"  slaveThreshold="100">  
                <!--心跳sql-->
                <heartbeat>select 1 from dual</heartbeat>  
                <writeHost host="hostM1" url="jdbc:oracle:thin:@192.168.157.129:1521:oracle11" user="scott" password="kmvcOrc.2019">  
                        <!--<readHost host="slave1" url="jdbc:oracle:thin:@192.168.157.128:1521:oracle11" user="yxc" password="yxc" />-->  
                </writeHost>
                <writeHost host="hostM2" url="jdbc:oracle:thin:@192.168.157.128:1521:oracle11" user="yxc" password="yxc" />  
        </dataHost>  
 
</mycat:schema>

这里switchType属性详解如下
-1:表示不自动切换。
1:自动切换。
2:表示基于MySQL主从同步的状态决定是否切换。
3:表示基于MySQL Galary Cluster的切换机制(Mycat1.4.1及以上版本支持)。

配置好后,先看一下当前的 dnindex.properties 文件内容,如下:

在这里插入图片描述

可以看到第一个writeHost作为写节点,并且插入数据将添加到192.168.157.129这台服务器的数据库中。
接下来我们关闭192.168.157.129这台服务器的数据库,再查看conf下的 dnindex.properties 文件内容,如下:

在这里插入图片描述

可以看到写节点已经自动切换为了第二个writeHost,并且添加数据验证,数据将添加到192.168.157.128这台服务器数据库中。



更多技术干货,请持续关注程序员大佬超。
原创不易,转载请注明出处。

相关文章:

  • 大数据营销促进消费品牌增长,消费品投资回归常识思维
  • 题库接口系统搭建
  • [漏洞分析]CVE-2021-42008 6pack协议堆溢出内核提权
  • 网课题库接口搭建步骤
  • WordPress v6.0.2 开源强大的博客网站程序
  • Android开发之科大讯飞语音合成与播报
  • 【问题思考总结】截得两部分质量相等的点是否就是质心?
  • Word处理控件Aspose.Words功能演示:使用C#对PDF文件进行进一步修改和转换
  • 手把手教你做多重线性逐步回归
  • 猿创征文|前端进阶必备——WebSockt实现聊天室(附源码)
  • 计算机大一新生,想卷却找不到方向,恳请前辈指指路?
  • Spring-02 IOC与DI
  • EasyExcel知识【Java程序进行读写生成Excel操作】
  • HALCON边缘检测
  • ATC‘22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时 | 龙蜥技术
  • JS 中的深拷贝与浅拷贝
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【面试系列】之二:关于js原型
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • HTTP中GET与POST的区别 99%的错误认识
  • JAVA_NIO系列——Channel和Buffer详解
  • php面试题 汇集2
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Quartz初级教程
  • select2 取值 遍历 设置默认值
  • 闭包--闭包作用之保存(一)
  • 欢迎参加第二届中国游戏开发者大会
  • 回顾 Swift 多平台移植进度 #2
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用SAX解析XML
  • 原生Ajax
  • 我们雇佣了一只大猴子...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • # 数论-逆元
  • #QT(一种朴素的计算器实现方法)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1)Nginx简介和安装教程
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (C++)八皇后问题
  • (编译到47%失败)to be deleted
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (译)2019年前端性能优化清单 — 下篇
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET 中让 Task 支持带超时的异步等待
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET程序员迈向卓越的必由之路
  • .NET使用存储过程实现对数据库的增删改查
  • @Autowired自动装配