架构设计:系统存储(12)——MySQL主从方案业务连接透明化(中)

Win11笔记本BIOS设置避坑大全:Secure Boot、RST、UEFI引导,一次讲清 本文详细解析了Win11笔记本BIOS设置中的关键问题,包括Secure Boot、Intel RST和UEFI引导的配置方法,帮助用户避开双系统安装中的常见陷阱。特别针对不同品牌笔记本的BIOS界面差异,提供了实用的操作指南和优化建议,确保系统兼容性和启动效率。 阅读详情

接上文《架构设计:系统存储(11)——MySQL主从方案业务连接透明化(上)》

4、改进方式三:MyCat数据库中间件

在上文中我们介绍了MySQL读写分离集群的持续优化方式。按照这样的方式,集群中负责读写分离的MySQL节点基本上能够分别实现真对上层业务系统访问的透明化。这样的MySQL集群方式已经可以承载读者遇到的大部分业务系统的结构化数据规模,但整个集群方案还有一些明显的问题:首先就是业务开发人员始终还是需要分配一定的精力去分别管理读操作会话和写操作会话的数据库连接;其次这个集群方案主要解决的是单张数据表数据量不大条件下的MySQL读写性能(千万级数据,还有一个前提是数据表本身拥有符合业务要求的索引结构且数据节点的性能配置合理),如果数据库中单张数据表的规模达到了亿级(甚至以上),那么查询压力集中在一个读节点上也不会再有助于查询性能提升。

所以在必要的情况下,我们还需要继续对上文给出的MySQL集群方案进行改进,让其能够适应更庞大的结构化数据规模。具体的思路就是在保持读写分离方案的基础上,对业务系统中结构化数据量达到或者超过亿级规模的若干张业务表进行拆分工作。本篇文章向读者介绍一个由国人开发并完全免费发布的数据库中间件,MyCat。它不但可以作为之前介绍的读写分离方案的替换方案,更重要的是它还能独立创建和管理数据表的拆分工作。

在实际运行的业务系统中,如果其承载的结构化数据量超过了亿级,那么最可能的情况是数据库中某一张或者某几张数据表的承载规模超过亿级,其它大多数数据表的数据量并不会太大。所以实际工作中架构师和DBA只需要针对这几张数据表和直接关联的数据表设计数据拆分方案。

4-1、MyCat基本概念

MyCat是一款数据库中间件,它基于阿里的一款数据库中间件Cobar而研发。“数据库中间件”这在整个专题的文章中都是一个新词语,但从“中间件”这个关键词来看我们至少可以知道:MyCat并不真正处理数据库操作而是作为一个中间层存在于业务系统和真实的数据存储系统之间。

这里写图片描述

上图来源于MyCat官网(http://www.mycat.org.cn/)。是的,MyCat数据库中渐渐最关键的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,对 SQL 语句做一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,并将返回的结果做适当的处理,最终再返回给用户。MyCat数据库中间件不只可以作为MySQL(MariaDB)的最佳搭配,还可以提供对ORACLE、DB2、SQL Server、MongoDB的支持。只不过MyCat对这几个关系型数据库的支持是基于JDBC规范,将它们模拟为MySQL,而对MongoDB的支持(Version 1.3+的版本支持)是封装了 MongoDB API 基于JDBC的实现。MyCat最关键的功能特性还包括:

  • 支持单纯的读写分离:只需要进行最简单的配置过程,就可以让MyCat对下层数据存储集群提供读写分离功能的支持,并且提供数据写操作节点的主从切换操作。

  • 支持数据表的拆分功能,包括指定数据表的纵向拆分和横向拆分(又称为垂直拆分和水平拆分)。并且这个拆分过程和拆分后的维护过程对上层开发人员完全透明。

  • 多租户功能:同一个应用的,连接同一个MyCat数据库中间件,如果采用不同的连接用户将会由MyCat将实际操作路由到不同的物理节点上,从而实现多租户功能。

在正式介绍MyCat使用之前,为了便于读者能够更好的理解后续的技术方案,需要首先向读者介绍一些和下文示例有关的MyCat基础定义。如果读者需要深入了解MyCat的工作原理和技术实现,可以到其官网上下载更多资料。

这里写图片描述

数据的拆分方式一般分为两种:横向(水平)和纵向(垂直)。纵向(垂直)拆分方式从技术层面上来说相对简单且便于维护,其基本原理是将原本存在于同一个数据库中的属于不同业务模块的数据表分别拆分到不同的数据库中进行存储(这些数据库可能在同一操作系统上也可能不在同一操作系统上,可能在同一个数据库集群上也可能不在同一个数据库集群上)。纵向(垂直)拆分其操作目标是数据表,要完成这样的拆分动作,技术团队至少应该保证这些业务模块存在极少的耦合度。横向(水平)拆分是指为了限制/减少将某张数据表中的数据规模,按照某种规则将这张数据表拆分成字段相同的多张数据表,并存储到不同的数据库中(这些数据库一般不在同一个操作系统上)。 横向(水平)拆分操作目标是数据表中的数据,其目的是在结构化数据达到一定规模时(达到千万级别),将针对数据表的某一次操作请求的压力分配到若干个服务节点上。可见真正能够进一步解决关系型数据库性能问题的办法,还需要对数据表进行横向(水平)拆分,而MyCat的数据组织结构主要就是为了支持数据表的横向(水平)拆分。

  • 逻辑库(schema):前文中已经提到,MyCat数据库中间件虽然本身不存储任何数据,也不存在任何的数据表结构,更没有任何数据库文件。但是为了描述底层真实数据的协调结构,MyCat数据库中间件存在一些逻辑概念,首先最顶层的逻辑结构就是逻辑库。连接使用MyCat数据库中间件的上层业务系统,实际上并不知道最底层真实数据的组织结构,对于它来说MyCat就是它使用的一个逻辑库。

  • 逻辑表(table)和逻辑节点/分片节点(dataNode):逻辑库中包含多个逻辑表,所谓逻辑表同样没有真实数据,只是为了方便描述底层真实数据的协调结构和向上层使用者屏蔽访问细节。逻辑表对应的逻辑存储位置称为逻辑节点/分片节点,逻辑表和逻辑节点/分片节点是进行数据表横向(水平)拆分的关键,这是因为逻辑表不但可以指定自身的逻辑处理规则,还可以根据逻辑表和逻辑节点/分片节点的对应关系确定数据分发方式。

  • 节点主机(dataHost):逻辑节点最终要对应物理性质的配置,在MyCat中称为节点主机。一个逻辑节点需要对应一个节点主机。在节点主机下技术人员可以设置物理节点,在上图中MyCat节点主机dataHost2下设置了三个MySQL物理节点。通过节点主机配置的功能,技术人员还可以分别设置了这些物理节点的读操作特性和写操作特性。是的,这是MyCat支持读写分离功能的关键配置。

4-2、使用MyCat完成读写分离

作为快速上手也为了继续优化之前文章中介绍的MySQL读写分离方案,本小节我们首先通过MyCat配置一个最简的、单纯的读写分离集群。配置过程的是指也很简单:不需要对逻辑表进行分片,也就是说只需要配置一个分片表和分片节点;只使用读写分离功能,也就是说只需要在这唯一的一个分片节点配置读节点和写节点以及节点健康的检查策略。

这里写图片描述

您可以在MyCat官网上下载MyCat的Linux版本,在本文发表时MyCat稳定版本为V 1.6.1。MyCat数据库中间件的工作目录下的conf文件夹中存放着所有需要的配置文件,其中有几个配置文件比较重要,它们是:schema.xml、rule.xml和server.xml。rule.xml描述了逻辑表和逻辑节点/分片节点的关联规则,也即是数据的分片规则;server.xml描述了MyCat服务的访问规则和用户授权规则。最重要的是schema.xml文件,其中描述了上文中我们提到的几个关键概念,逻辑库、逻辑表、分片节点和节点主机。一般来说我们要实现单纯的读写分离集群,只需要对schema.xml文件进行更改:

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <!-- 首先是逻辑库的定义,逻辑库名叫做qiangSchema。其中定义了两个逻辑表 -->
    <schema name="qiangSchema" checkSQLschema="false" sqlMaxLimit="100">
        <!-- 
        逻辑表要和物理表的名字一样,大小写也最好一样。关于type属性的定义后文会详细描述 
        两张逻辑表都对应一个逻辑节点/分片节点——dn1。也就是说两张逻辑表都不做水平拆分
        -->
        <table name="myuser" primaryKey="Id" type="global" dataNode="dn1" />
        <table name="t_user" primaryKey="uid" type="global" dataNode="dn1" />
    </schema>
    <!-- 逻辑节点/分片节点的定义,注意其使用的节点主机定义 -->
    <dataNode name="dn1" dataHost="dataHost" database="qiang" />
    <!-- 节点主机中包括两个物理节点,其中一个是读节点另一个是写节点 -->
    <dataHost name="dataHost" maxCon="1000" minCon="10" balance="1" writeType="0"
        dbType="mysql" dbDriver="native" switchType="2">
        <heartbeat>select user()</heartbeat>
        <!-- MyCat支持一个节点主机下定义多个读节点和多个写节点 -->
        <writeHost host="hostM1" url="192.168.61.140:3306" user="root" password="123456">
            <!-- can have multi read hosts -->
            <readHost host="hostS1" url="192.168.61.141:3306" user="root" password="123456"/>
        </writeHost>
    </dataHost>
</mycat:schema>

这里要注意一个关键点,请在由Linux For MyCat控制的各个MySQL节点上设置“lower_case_table_names = 1”,否则使用MyCat的时候会提示找不到表的错误。以上代码段落示意了MyCat中实现的最简单的读写分离集群最关键的配置信息,这里对配置信息进行一些必要的说明(部分说明直接摘自MyCat官方文档):

  • schema:checkSQLschema:当该值设置为 true 时,如果我们执行语句“select * from qiangSchema.travelrecord;”则 MyCat 会把语句修改为“select * from travelrecord;”。即把表示 schema 的字符去掉,避免发送到后端数据库执行时报“(ERROR 1146 (42S02): Table‘qiangSchema.travelrecord’ doesn’t exist)”。

  • schema:sqlMaxLimit:当该值设置为某个数值时。每条执行的 SQL 语句,如果没有加上 limit 语句,MyCat 也会自动的加上所对应的值(适用于MySQL数据库)。

  • table:primaryKey:该逻辑表对应真实表的主键。

  • table:type:该属性定义了逻辑表的类型,目前逻辑表只有“全局表”(global)和”普通表”两种类型。如果是普通表,则不需要设置这个type属性。那么什么叫做全局表呢?数据库拆分的关键在于被拆分的数据表和关联表之间的join操作符,Mycat 中通过数据冗余来解决这类表间的join操作问题,即所有的分片都有一份数据的拷贝,这样的数据表定义为全局表。在数据库中存在的字典性质的的数据表或者变化率趋于0的数据表都应设置为全局表。

  • dataHost:maxCon和dataHost:minCon:分别指定每个读写实例连接池的最大连接数和最小连接数。也就是说,标签内嵌套的 writeHost、readHost 标签都会使用这个属性的值来实例化出连接池的最大连接数。

  • dataHost:balance:这个设置很关键,涉及到节点主机中各个物理节点的读负载模式问题。设置值为0, 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上;设置值为1,全部的readHost与stand by writeHost参与 select 语句的负载均衡;设置为2时,所有读操作都随机的在 writeHost、readhost 上分发;设置为3时,所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost不负担读压力。注意只在 MyCat Version 1.4及以后的版本才支持值为3的设置。

  • dataHost:writeType:该属性涉及节点主机中个物理节点的写负载模式问题。MyCat目前支持最好或者说推荐的设置值就是0。当writeType属性设置为0时,所有写操作发送到配置的第一个writeHost,如果第一个writeHost挂了,则切到还生存的第二个writeHost。重新启动后已切换后的为准,切换记录在配置文件dnindex.properties中。

  • dataHost:dbType和dataHost:dbDriver:dbType属性指定后端连接的数据库类型,目前支持二进制的 mysql 协议,还有其他使用 JDBC 连接的数据库。目前dbType属性可指定的值包括:mysql、maridb、oracle、mongodb、postgresql。dbDriver属性则可以给定连接指定数据库所使用的驱动类型,如果是连接mysql和maridb,则该属性可以设置为native(原生的mysql网络连接协议),否则请指定数据库对应的JDBC驱动实现(需要将符合JDBC 4标准的驱动JAR包放到MyCat安装路径下的lib目录中)。

  • dataHost:switchType:该属性描述多个writeHost的切换机制,值为1时表示自动切换;值为2时,表示基于 MySQL 主从同步的状态决定是否切换;值为3时,表示基于MySQL galary cluster 的切换机制。

配置完成schema.xml文件并且保存后,就可以用过“mycat console”命令启动了。“mycat console”命令可以用于测试配置效果使用,因为这样的启动方式MyCat将会把日志直接输出到屏幕上。

# mycat console
Running Mycat-server...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    | 2016-11-10 00:03:25,369 [INFO ][WrapperSimpleAppMain] total resouces of dataHost dataHost is :2  (io.mycat.backend.datasource.PhysicalDBPool:PhysicalDBPool.java:100)
......
jvm 1    | 2016-11-10 00:03:26,874 [INFO ][WrapperSimpleAppMain] ===============================================  (io.mycat.MycatServer:MycatServer.java:266)
jvm 1    | 2016-11-10 00:03:26,874 [INFO ][WrapperSimpleAppMain] MyCat is ready to startup ...  (io.mycat.MycatServer:MycatServer.java:267)
jvm 1    | 2016-11-10 00:03:26,874 [INFO ][WrapperSimpleAppMain] Startup processors ...,total processors:2,aio thread pool size:4
jvm 1    |  each process allocated socket buffer pool  bytes ,a page size:2097152  a page's chunk number(PageSize/ChunkSize) is:512  buffer page's number is:40  (io.mycat.MycatServer:MycatServer.java:279)
......
jvm 1    | 2016-11-10 00:03:28,396 [INFO ][WrapperSimpleAppMain] using nio network handler   (io.mycat.MycatServer:MycatServer.java:381)
jvm 1    | 2016-11-10 00:03:28,513 [INFO ][WrapperSimpleAppMain] $_MyCatManager is started and listening on 9066  (io.mycat.MycatServer:MycatServer.java:397)
jvm 1    | 2016-11-10 00:03:28,515 [INFO ][WrapperSimpleAppMain] $_MyCatServer is started and listening on 8066  (io.mycat.MycatServer:MycatServer.java:401)
jvm 1    | 2016-11-10 00:03:28,515 [INFO ][WrapperSimpleAppMain] ===============================================  (io.mycat.MycatServer:MycatServer.java:403)
jvm 1    | 2016-11-10 00:03:28,515 [INFO ][WrapperSimpleAppMain] Initialize dataHost ...  (io.mycat.MycatServer:MycatServer.java:407)
......

可以看到MyCat启动成功了,接下来就可以使用mysql的客户端进行连接并测试读写操作执行了。

// 连接到mycat,mycat的端口为8066
# mysql -h 192.168.61.144 -P 8066 -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)
......

// 接下来执行一个insert语句:
> insert into myuser(Id,user_name,usersex,user_number) values (24,'user24',0,'242424');

// 从读节点查询刚才插入的数据
> select * from myuser;
+----+-----------+---------+-------------+
| Id | user_name | usersex | user_number |
+----+-----------+---------+-------------+
|  1 | 用户1      |       1 |       11111 |
| 22 | 用户22     |       0 |      220220 |
| 23 | 用户23     |       1 |      232323 |
| 24 | user24    |       0 |      242424 |
+----+-----------+---------+-------------+

需要注意MyCat并不负责节点主机中设置的写节点和读节点间的数据同步过程,所以您还是需要使用MySQL Replicaion机制完成读写节点的同步工作。另外注意,某些MySQL第三方客户端由于不支持NIO方式,所以连接MyCat还有一些问题,例如MySQL-Front。接下来的文章我们来实际搭建一个MyCat对数据库集群横向拆分和纵向拆分的支持。

PyTorch实战(26)——PyTorch分布式训练 在本节中,我们将探讨如何通过跨机器和机器内多进程的分布式训练来加速模型训练过程。我们将系统学习 PyTorch 提供的三大分布式训练 API——torch.distributed、torch.multiprocessing 以及 torch.utils.data.distributed.DistributedSampler,使用这些 API 能够极大的简化分布式训练,介绍如何使用 PyTorch 的分布式训练工具,在 CPU 和 GPU 上加速训练。 阅读详情

相关推荐

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

Mycat 开发调试环境配置-开启二次开发之路

Mycat是 数据库分库分表中间件。mycat1.6分库分表特性只能选择其一,不能同时存在,对于特殊应用场景既需要分库有需要分表,这就需要修改mycat的源码来实现了。今次我们来准备一下Mycat的开发调试环境。官网参考地址:http://www.mycat.io/

纸上得来终觉浅,绝知此事要躬行 1万+

汽车软件工程师必看:ASPICE流程实战指南(附完整产物清单)

本文为汽车软件工程师提供ASPICE流程实战指南,详细解析如何搭建合规开发环境、各阶段文档产出清单及工具链整合策略。通过实战案例和模板资源,帮助团队高效实施ASPICE标准,提升软件开发质量与效率。

weixin_29230805的博客 470

dataHost标签详解

mycat中schema.xml中dataHost标签详解,读写分离,负载均衡了解

rufeng的博客 818

logisim计组实验八 乘法器

原理:点这里 有问题欢迎留言哦~ 文章目录五位阵列乘法器电路图时间延迟分析六位补码阵列乘法器五位无符号乘法流水线原理图电路图原码一位乘法器原理图电路图补码一位乘法器 五位阵列乘法器 电路图 此处注意:全加器FA的cout端是进位端而非输出端 使用硬件控制比循环累加的速度快得多。 但是存在串行进位链 改进版: 时间延迟分析 T是计算相加数的一级门延迟 3n–>2n 性能差别在1.5倍 ...

treblez's blog 2万+

scGPT学习资料汇总 - 单细胞多组学基础模型

scGPT(single-cell Generative Pre-trained Transformer)是一个针对单细胞多组学数据的基础模型,由多伦多大学Wang Bo实验室开发。该模型通过在超过3300万个细胞上进行生成式预训练,捕捉了基因和细胞之间的复杂关系,为多种下游任务提供了强大的基础。scGPT为单细胞分析提供了强大的基础模型和丰富的资源。通过本文汇总的学习材料,读者可以快速掌握scGPT的使用,并将其应用到自己的研究中。

2401_87189860的博客 838

mycat 中的dataHost和dataNode 以及如何按月分片

先说一下datahost这是用来配置是的数据库服务信息的,一个datahost中可能有多个服务器,这些服务器可能会分担读写任务,如果这样,那么可能需要做服务器的主从设计。 datanode用来做数据分片的,mycat会根据分片规则将数据写入datanode对应的数据库中,不同的datanode中可以使用相同的datahost。 用mycat一直是用编号作为分片依据,最近一个项目中数据库结构不适...

weixin_30362801的博客 357

matlab 点云按高程进行赋色【2024最新版】

首先按照Z轴方向求取所在点云的高程极值(包括高程最大值与最小值),然后将高程归一化到0~255范围内,最后采用matlab中的colormap颜色渲染函数进行赋色并保存渲染结果到点云。

点云侠的博客 3341

The content of element type "mycat:schema" must match "(schema*,dataNode*,dataHost*)"错误解决办法

使用mycat时遇到The content of element type "mycat:schema" must match "(schema*,dataNode*,dataHost*)"错误解决办法

倾情烟雨的博客 2693

骑砍Ⅱ霸主MOD开发(5)-2D界面

本文介绍了2D界面开发的技术框架,主要包括以下内容: 2D界面架构:由多个GauntletLayer(菜单/对话框/定制页面)和SceneLayer(3D页面)组成,支持屏幕切换和管理。 GauntletLayer实现:采用Movie(HTML页面)+ViewModel(动态数据)模式,支持优先级管理、焦点控制和事件响应。 2D控件系统:包括颜色字体、坐标布局、背景图(Sprite/Texture)等配置方式,支持自定义控件开发。 定制化页面开发:详细说明了游戏菜单和对话框的实现方法,包括状态管理、事件回调

骑砍战团&霸主MOD开发 1183

【原理图PCB专题】Allegro模块化移动器件报...has the LOCKED property怎么解锁?

正常来说做好一个模块化,如果不需要再动,最好还是lock,防止不明白的工程师异动导致问题。如果复用布局设计时,因为有些器件和拓扑并不完全一致,那需要调整部分器件,被锁之后只能全选,无法修改。所以解开锁定后,就能正常编辑了。

一点硬件 2392

架构设计:系统存储(11)——MySQL主从方案业务连接透明化(上)

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!

smart_an的专栏 1439

YOLO11涨点优化:半监督学习 | 结合Unbiased Teacher框架,利用海量无标签数据实现自训练暴力涨点

本文提出了一种基于Unbiased Teacher v2的半监督学习方法,用于解决YOLO11目标检测模型在标注数据不足时的性能瓶颈问题。通过分析纯监督YOLO11在小样本场景下的局限性,揭示了朴素自训练方法的三大陷阱:确认偏差、类别不均衡和噪声累积。文章详细解析了Unbiased Teacher框架的核心设计理念,包括教师-学生模型互监督机制、类别平衡损失和Burn-In预热策略,并重点介绍了v2版本针对无锚框检测器的优化。最后提出将Unbiased Teacher与YOLO11相结合的融合架构设计方案,

2601_95807009的博客 208

MySQL系统存储

MySQL系统存储 1.MySQL数据库性能优化(1) 2.MySQL数据库性能优化(2) 3.MySQL数据库性能优化(3) 4.MySQL数据库性能优化(4) 5.MySQL数据库性能优化(5) 6.MySQL简单主从方案及暴露的问题 7.MySQL主从方案业务连接透明化(上) 8.MySQL主从...

u014066037的博客 306

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

架构设计:系统存储(13)——MySQL横向拆分与业务透明化(1)

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!

smart_an的专栏 1598

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

架构设计:系统存储(14)——MySQL横向拆分与业务透明化(2)

作者简介:大家好,我是哥,前中兴通讯、美团架构师,现某互联网公司联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!

smart_an的专栏 1938

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

MySQL 数据库性能监控:基于 mysqld_exporter 监控连接数、QPS、慢查询及主从复制延迟

MySQL 数据库性能监控:基于 mysqld_exporter 监控连接数、QPS、慢查询及主从复制延迟

weixin_46619605的博客 632

MySQL 主从复制、读写分离

在数字化浪潮的席卷下,数据量呈现出爆发式增长的态势。企业所面临的数据处理挑战日益严峻,传统的单节点MySQL架构在诸多方面逐渐暴露出其局限性。当面对高并发读写请求时,单节点架构就如同交通拥堵路段,性能急剧下降,响应迟缓;在数据容灾方面,缺乏有效的备份和恢复机制,一旦主节点出现故障,数据丢失和服务中断的风险极高;而且随着数据量的不断攀升,性能瓶颈愈发明显,严重制约了企业业务的发展。为了突破这些困境,MySQL主从复制与MyCAT读写分离技术应运而生。

2503_91100205的博客 1243

MySQL主从复制与读写分离

在数据规模爆炸增长的今天,数据库系统的扩展性和高可用性已成为企业架构设计的核心命题。传统单节点 MySQL架构在面对高并发读写、数据容灾及性能瓶颈时显得力不从心,而 MySQL 主从复制通过实时数据同步机制,为主库分担读压力并提供灾备支持;MyCat中间件则基于主从架构实现透明化读写分离,进一步释放系统资源、提升吞吐量。本课程将围绕这两大核心技术展开,通过原理讲解、配置实战与案例剖析,帮助学员系统掌握数据库高可用架构设计思路,实现从基础配置到性能调优的全链路技能提升。

kgc302的博客 1399
上一篇: 架构设计:系统存储(11)——MySQL主从方案业务连接透明化(上)
下一篇: 架构设计:系统存储(13)——MySQL横向拆分与业务透明化(1)
seableble
博客等级 码龄7年 137粉丝 700原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值