MyCat加MySQL实现读写分离,故障转移

MySQL 异步复制源自动故障转移 1 异步复制源架构 1.1基于主从复制的异步复制源 从MySQL 8.0.22开始支持异步连接故障转移机制,我们可以在一套主从复制架构的基础上,创建一个异步复制连接的Replica副本,当主从复制Source发生意外宕机,业务提升Replica为新的Source对外进行服务,异步连接Replica可自动检测主从架构源端连接异常,并重新指向新的Source进行数据复制。 架构图与流程展示: Source 、Replica为正常的主从复制架构,Async Replica为通过异步连接的复制副本 当主从复制架 阅读详情

采用专职专责的设计减少数据库压力,提高性能,将写请求交给Master处理,读请求交给Slave处理,从而提高系统性能,减缓数据库压力
在这里插入图片描述

MySQL5.7主从同步环境搭建
https://blog.youkuaiyun.com/l_learning/article/details/103629651

MyCat官网
http://www.mycat.io/

环境Mycat-server-1.5.1 + MySQL5.7

MyCat 127.0.0.1
MySQL master 192.168.241.200
MySQL slave1 192.168.241.201
MySQL slave2 192.168.241.202

在数据库中为Mycat新建一个账号并赋权

CREATE USER  'MyCat'@'host'  IDENTIFIED BY  '666666';
GRANT ALL privileges ON `goods`.* TO 'MyCat'@'host';
--赋予所有权限
GRANT ALL PRIVILEGES ON `goods`.* TO  'MyCat'@'host';
--刷新权限
FLUSH PRIVILEGES;

server.xml配置

在conf目录下的server.xml
配置一个MyCat用户供应用连接到mycat,同时mycat 在schema.xml中配置后了一个逻辑库MyCat,配置好逻辑库与用户的映射关系

<user name="MyCat">
    <property name="password">666666</property>
    <property name="schemas">MyCat</property>
</user>

schema.xml配置

schema标签中的name属性(MyCat)必须与server.xml中的user标签的逻辑库一致(MyCat)

<schema name="MyCat" checkSQLschema="false" sqlMaxLimit="100" dataNode="mycatdb">
</schema>
<dataNode name="mycatdb" dataHost="mycluster" database="goods" />

<!-- 开启读写分离必须将balance修改为1-->
<dataHost name="mycluster" maxCon="1000" minCon="10" balance="1"
    writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
    <heartbeat>show slave status</heartbeat>
    <!-- 读写分离 -->
    <writeHost host="Master" url="192.168.241.200:3306" user="root" password="666666">
        <readHost host="Slave1" url="192.168.241.201:3306" user="root" password="666666" />
        <readHost host="Slave2" url="192.168.241.202:3306" user="root" password="666666" />
    </writeHost>
</dataHost>

启动MyCat

修改conf目录下的log4j.xml的日志等级为DEBUG

<root>
   <level value="DEBUG" />
   <appender-ref ref="FILE" />
</root>

这里使用的是window版,双击startup_nowrap.bat即可
Linux启动

./mycat start

插入一条数据,通过mycat.log查看mycat连接的真实数据库

INSERT INTO good VALUES (3,'方便面',8)

200的是主节点,执行写操作
在这里插入图片描述
查询数据库记录,通过mycat.log查看mycat连接的真实数据库

DELETE FROM good WHERE good_id = 3

202的是从节点,执行读操作
在这里插入图片描述

故障转移

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/" >

    <schema name="MyCat" checkSQLschema="false" sqlMaxLimit="100" dataNode="mycatdb">
    </schema>
    <dataNode name="mycatdb" dataHost="mycluster" database="goods" />

    <!-- 开启读写分离必须将balance修改为1-->
    <dataHost name="mycluster" maxCon="1000" minCon="10" balance="1"
        writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>show slave status</heartbeat>
        <!-- 读写分离 -->
        <writeHost host="Master" url="192.168.241.200:3306" user="root" password="666666">
            <readHost host="Slave1" url="192.168.241.201:3306" user="root" password="666666" />
            <readHost host="Slave2" url="192.168.241.202:3306" user="root" password="666666" />
        </writeHost>
        <!-- 主从切换 -->
        <writeHost host="Slave1" url="192.168.241.201:3306" user="root" password="666666"></writeHost>
        <writeHost host="Slave2" url="192.168.241.202:3306" user="root" password="666666"></writeHost>
    </dataHost>
  
</mycat:schema>

把主节点关闭,执行写操作会将一个从节点提升为主节点,执行写操作从而实现故障转移

手把手教你在Keil/IAR中移植SEGGER_RTT组件(避坑指南+性能对比) 本文详细介绍了在Keil/IAR开发环境中移植SEGGER RTT调试组件的完整流程与优化技巧。通过对比传统串口调试,SEGGER RTT凭借零硬件占用、高速传输和双向交互等优势,显著提升嵌入式开发效率。文章包含配置步骤、性能调优方案及常见问题解决方案,是嵌入式开发者必备的实用指南。 阅读详情

相关推荐

别再手动调时间了!用Windows自带的tzutil命令,1分钟搞定时区错误

本文介绍了如何使用Windows自带的tzutil命令快速解决时区错误问题。通过简单的命令行操作,用户可以一键切换时区、查看全球时区代码库,并实现自动化时区同步。相比传统GUI设置,tzutil更可靠且高效,特别适合企业环境批量部署。

weixin_42531494的博客 314

基于MyCat的MySql自动故障转移

# MySql双主复制 ## 创建主a,b镜像 建立文件夹,创建相关文件,这里只给a的过程 mkdir mysql-mm-a touch Dockerfile touch mysql.cnf mkdir /var/docker/mysql/data-mm-a 文件内写入相应内容

Coding changes the world 719

【MATLAB+VScode】VScode调试MATLAB代码的终极指南

本文详细介绍了在VScode中调试MATLAB代码的完整方案。通过配置MATLAB Engine for Python作为桥梁,实现在VScode中设置断点、单步执行、查看变量等交互式调试功能,有效结合了VScode的现代化编辑体验与MATLAB的强大计算内核,显著提升开发效率。

weixin_29161719的博客 412

手把手教你实现MySQL读写分离+故障转移,不信你学不会!

上一篇发了手动搭建Redis集群和MySQL主从同步(非Docker)之后,很多同学对文中主从结构提到的读写分离感兴趣,本打算在双十一期间直接把读写分离分享给大家,奈何工作一直没停下,所以这周抽空把这些分享出来。

Java笔记虾 2021

用豆包+Skill从零制作AI漫剧:分镜、画面、配音到成片全流程

AI漫剧作为一种新兴内容形态,结合AI绘画与AI视频生成技术,正在改变短视频创作方式。其核心原理是利用提示词工程,将创意转化为结构化分镜脚本,再通过豆包等AI助手的Skill能力,将重复的脚本生成和分镜拆解流程固化为可复用的指令模板,从而大幅降低从构思到成品的生产门槛。这种模式无需剧组、演员和实景拍摄,让个人创作者也能借助图像生成、TTS配音与剪辑合成工具,批量化地生产剧情短片,适用于短视频平台连载、商业定制与个人IP打造。围绕豆包+Skill这条主线,从选题、剧本写作、分镜表设计,到画面提示词生成、视频片

weixin_29048309的博客 1493

从编译到调通:RK3588与FPGA的PCIe XDMA驱动实战解析

本文详细解析了在RK3588平台上为FPGA板卡编译、加载与调试PCIe XDMA驱动的完整实战流程。内容涵盖环境准备、Makefile深度定制、编译排错、驱动加载与内核日志解读、设备节点分析以及用户空间编程实战,旨在帮助开发者打通RK3588与FPGA之间的高速PCIe通信链路,实现稳定可靠的数据传输。

weixin_29304021的博客 482

MySQL的数据库容错与故障转移

1.背景介绍 1. 背景介绍 MySQL是一种流行的关系型数据库管理系统,广泛应用于Web应用程序、企业应用程序等。在实际应用中,数据库容错和故障转移是非常重要的。数据库容错可以确保数据库系统在故障时能够正常运行,不会导致数据丢失或损坏。故障转移可以确保数据库系统在故障时能够快速恢复,不会对业务产生影响。 在本文中,我们将讨论MySQL的数据库容错与故障转移,包括核心概念、算法原理、最佳实践...

AI天才研究院 1543

从 Service Entry Sheet 按 PO 行项目追溯服务行:PACKNO 与 ESLL 层级解包实战

摘要: SAP MM模块中,外部服务采购的数据结构较为复杂,服务明细并非直接存储在采购订单行项目表EKPO中,而是通过PACKNO关联到服务包表ESLL。本文解析了从采购订单行项目EBELN+EBELP获取服务行号SRVPOS的方法,重点分析了服务包的层级结构(根包、子包SUB_PACKNO),并提供了兼容合同项目的ABAP代码实现。通过EKPO-PACKNO定位根包后,需结合ESUC和ESLL表逐层解析子包,最终获取服务明细数据,解决了服务采购场景下的数据关联难题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 172

MYSQL MHA实现故障转移和自动切换

一旦主服务器故障,MHA会自动选择一个适当的从服务器作为新的主服务器,并更新其他从服务器的配置,使其连接到新的主服务器上。5. 数据一致性难以保证:由于主从复制是通过异步的方式进行数据同步,存在网络延迟、复制延迟等因素,从服务器上的数据与主服务器之间可能存在一定的差异。4. 自动切换复杂性:在传统的主从架构中,当主服务器发生故障或需要维护时,需要手动将一个从服务器提升为新的主服务器。数据一致性维护:MHA确保故障转移后新的主服务器与原主服务器的数据保持一致,通过同步二进制日志等机制实现数据的无缝切换。

Breeze_nebula的博客 2155

【项目实战】功能安全目标有四个ASIL等级:A、B、C、D,ASIL D是最高的等级

功能安全是一种关注产品在异常情况下如何避免造成伤害的概念功能安全在汽车电子行业中非常重要。功能安全涉及到系统、电子和软件三个部分。(1)系统部分主要涉及概念设计(2)而具体的实施则是在电子和软件部分完成。

奶爸的编程之路,也就一周冷个三天 2824

不会精准对比前人研究写“讨论与对比”段落?教你用ChatGPT辅助,直接让这部分提升一个档次(附提示词指令)

一个我觉得很有效的做法是,选取几篇具有代表性的文献,从研究方法、变量设置或结论方面进行对照分析,并指出本研究在哪些方面进行了补充或修正。除了简单说“提出了新的方法”或“首次应用某模型”,更需要说明这一做法在结果解读、研究设计或理论拓展上的具体意义,最好能够与现有研究进行比较,形成明确的差异化描述。段落应包含:研究结果解释、与前人研究对比、研究贡献、局限性反思,并在结尾提出未来研究的可能方向。讨论与对比部分一般位于文献综述、研究讨论或结果分析的后面,目的是对比已有研究,突出自己研究的价值与新意。

智能AI让学术科研更容易 171

SpringBoot +MySQL+mycat 实现读写分离+故障转移

关于MySQL的读写分离的实现,有两种方式,第一种方式即我们手动在代码层实现逻辑,来解析读请求或者写请求,分别分发到不同的数据库中,实现读写分离;第二种方式就是基于MyCat中间件来实现读写分离的效果;这两种方式我都会在这篇博客中进行详细地介绍、搭建,并且分析其中的优劣。 原理初探 从MySQL的主从同步开始谈起,最开始我们的数据库架构是这样的。 主库负责了所有的读写操作,而从库只对主库...

卡洛斯利伯 2035

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《Mycat核心技术》第17章:实现MySQL的读写分离

介绍Myca实现MySQL的读写分离案例,掌握Mycat在实际案例场景中的应用,能够结合自身实际项目将Mycat灵活应用到自身实际项目中。

冰河的专栏 1532

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MyCAT实现MySQL读写分离:原理、部署与实战指南

9066

XYL6AAD8C的博客 1013

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

动手实现MySQL读写分离and故障转移

前言 久违了,由于最近新项目下来了,所以工作特别忙,导致迟迟没更,上一篇发了手动搭建Redis集群和MySQL主从同步(非Docker)之后,很多同学对文中主从结构提到的读写分离感兴趣,本打算在双十一期间直接把读写分离分享给大家,奈何工作一直没停下,所以这个周末抽空把这些分享出来。 关于MySQL的读写分离的实现,有两种方式,第一种方式即我们手动在代码层实现逻辑,来解析读请求或者写请求,分别分发到...

Object的博客 1676

教你实现MySQL读写分离+故障转移

前言 上一篇发了手动搭建Redis集群和MySQL主从同步(非Docker)之后,很多同学对文中主从结构提到的读写分离感兴趣,本打算在双十一期间直接把读写分离分享给大家,奈何工作一直没停下,所以这周抽空把这些分享出来。 关于MySQL的读写分离的实现,有两种方式,第一种方式即我们手动在代码层实现逻辑,来解析读请求或者写请求,分别分发到不同的数据库中,实现读写分离;第二种方式就是基于MyCat中间...

乐此不皮的博客 865

MySQL数据库(四)—— 使用MyCat实现MySQL主从读写分离实战指南

MyCat实现MySQL主从读写分离指南 本文介绍了使用MyCat中间件实现MySQL主从读写分离的完整方案。主要内容包括: MySQL读写分离原理:详细解释了主库处理写操作、从库处理读操作的工作原理,以及数据同步机制。 MyCat中间件特性:作为开源企业级数据库中间件,MyCat支持ACID事务、分库分表、读写分离和故障切换等功能。 部署配置步骤: 环境准备与软件安装 创建专用用户和权限设置 Java环境配置和目录结构说明 核心配置文件详解(server.xml和schema.xml) 架构优势:通过读写

荣光波比的博客 1356

mysql mycat读写分离_Mysql读写分离(Mycat版)

(1).读写分离概述1)工作原理读写分离是让主数据库处理事务性增删改操作(insert、delete、update),让从数据库处理查询查询操作(select)。2)作用1.分担负载2.主从只负责各自的写和读,极大的缓解X锁和S锁争用3.从库可配置MyISAM引擎,提升查询性能以及节约系统开销4.增加冗余,提高可用性3)实现方法一、应用程序和网站程序的实现。指的是在应用程序内部及连接器中实现读写分...

weixin_39611161的博客 237

手把手教你实现mysql读写分离+故障转移

前言 上一篇发了手动搭建Redis集群和MySQL主从同步(非Docker)之后,很多同学对文中主从结构提到的读写分离感兴趣,本打算在双十一期间直接把读写分离分享给大家,奈何工作一直没停下,所以这周抽空把这些分享出来。 关于MySQL的读写分离的实现,有两种方式,第一种方式即我们手动在代码层实现逻辑,来解析读请求或者写请求,分别分发到不同的数据库中,实现读写分离;第二种方式就是基于MyCat中...

疯一样的女子 1254

MyCAT实现MySQL的读写分离

在MySQL中间件出现之前,对于MySQL主从集群,如果要实现其读写分离,一般是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度太高,如果我数据库的地址发生改变了,那么我程序端也要进行相应的修改,如果数据库不小心挂掉了,则同时也意味着程序的不可用,而这对很多应用来说,并不能接受。 引入MySQL中间件能很好的对程序端和数据库进行解耦,这样,程序端只需关注数据库中间件的地址,而无需知晓底层

slowtech的博客 364

mysql读写分离实现_如何实现MySQL数据库的读写分离?

上一篇文章我们已经介绍过《MySQL是如何实现主从备份的?》但如果主库只负责所有的读写操作,而从库只实现备份功能,这样的主从架构看起来性价比似乎不是很高。我们所希望的主从架构是,当我们在写数据时,请求全部发到Master节点上,当我们需要读数据时,请求全部发到Slave节点上。并且多个Slave节点最好可以存在负载均衡,那么这样的架构就能够让集群的效率最大化。实现读写分离,实际上有两种经...

weixin_39929687的博客 1637

MySQL实现读写分离的两种经典方案

备胎也有转正的一天

Craig无忌 2802

25、Mysql中间件实现mysql读写分离-MYCAT

MySQL中间件是指在MySQL数据库服务器和应用程序之间增加一个中间层,用于实现负载均衡、故障转移、自动分片等功能。常见的MySQL中间件有MySQL Proxy、MySQL Router、MaxScale、ProxySQL、Mycat等。MycatMycat是一款开源的MySQL中间件,可以实现数据分片和读写分离等功能...

weixin_37540600的博客 485

MyCat实现MySQL主从读写分离

一、MySQL读写分离的概述 二、什么是MyCat 三、搭建MYCAT 一、MySQL读写分离的概述 MySQl作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台MySQL作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。 因此,一般来说都是通过 主从复制(Master-Sl...

diexingtao9618的博客 248

通过容器技术(docker)部署MySQL 读写分离

通过容器技术(docker)及Mycat中间件实现MySQL读写分离部署。

dzchuan的博客 1141

MySQL读写分离

*!} */;2.配置负载均衡策略:修改server.json,设置为BalanceRoundRobin(轮询)。读写分离是构建高性能、高可用数据库架构的核心技术之一。通过合理选择实现方式(代码层或中间件)、精细配置数据路由策略,并结合主从复制与负载均衡,可显著提升系统的并发处理能力与容灾水平。未来,随着云原生与分布式数据库的普及,读写分离将进一步与容器化、自动化运维结合,为企业级应用提供更强大的数据服务支撑。

2501_91421610的博客 1599
上一篇: SpringBoot父子工程搭建
下一篇: 简易版Http请求工具
l_learning
博客等级 码龄8年 15粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值