Mycat2原理介绍

  • Mycat介绍

  • Mycat原理

  • Mycat 核心配置
    • Scheam.xml  逻辑数据库和节点对应关系配置
    • Server.xml    mycat的连接配置
    • Rule.xml.      分片规则
      • 自动分片auto-sharding-long,比如0-10000节点1 ,10001-20000节点2
      • 枚举分片sahrding-bt-intfile ,比如beijing节点1,shanghai节点2
      • 取模分片mod-long,
      • 按日期分片

  • 操作(水平分库)
    • 可以用数据库工具直接连接Mycat的逻辑数据库。
    • 在Mycat上创建逻辑表,就会在对应的节点上创建真实的物理表(这里会有多个节点)。
    • 执行插入语句,如果是自动分片,那么Mycat就会根据Id存到对应的物理数据库中。

  • Mycat乱码问题
    • dbDriver="native"
    • url="192.168.52.10:3306"

  • 全局序列号问题(分库分表后主键没办法用自增主键)
    • Server.xml里sequnceHandlerTypes设为0,表示使用本地文件sequence_conf.properties的配置当前全局Id

  • Mycat读写分离
    • 为什么需要读写分离?
      • 性能提升:在高并发的情况下,数据库的读操作往往远多于写操作。通过读写分离,可以将读请求分散到多个从数据库上,只将写请求发送到主数据库。这样可以显著减轻主数据库的压力,提升整个数据库系统的处理能力。
      • 可扩展性:随着业务量的增加,数据库的负载会逐渐增大。读写分离允许动态地添加更多的从数据库来应对读负载的增加,从而实现数据库的水平扩展。
      • 高可用性:在Mycat的读写分离模式下,如果主数据库发生故障,可以迅速切换到从数据库进行读操作,保证业务的连续性。同时,也可以通过配置多个从数据库来提高系统的容错能力。
      • 资源优化:读写分离可以根据数据库的负载情况,优化硬件资源的使用。例如,读操作通常不需要太高的CPU性能,但需要更多的I/0资源和网络带宽。可以针对性地为读服务器配置更优的I/0设备和更宽的带宽,而为写服务器配置更强的CPU。

  • 为什么有的必须要从主节点查询?为什么不是所有的查询都放到从节点上?
    • 对事务一致性要求高的查询,为了保证事务的一致性,必须从主节点查询。
  • 主从复制架构
    • 主从复制用途
      • 实时灾备,用于故障切换
      • 读写分离,提高性能
      • 数据备份
    • 原理
      • 把主服务器上的binlog复制到从服务器上执行一遍,这样主从服务器的数据就相同了
        • 其实主节点上会有一个dump线程读取binlog的数据发送给从节点的IO线程
        • 如果有两个从节点,主节点就会有两个dump线程与之对应
        • 为什么需要dump线程?
          • 因为数据安全性考虑,主节点的binlog肯定不能备外部直接访问

  • 执行步骤

  • 造成主从延迟的原因?及解决方案?
    • 延迟1:binlog写入延迟
      • 每个事务提交时会把数据都写入到缓存里,在由fsync线程统一刷到磁盘
      • 这里我可以调整sync_binlog的值,来提高效率

  • 延迟2:sqlThread处理慢的问题
    • Mysql5.6往后把现有的sql线程 替换成了coordinator组件
    • coordinator负责读取realylog的数据,分发给多个worker线程去执行,每个worker线程都会有一个队列(如何保证队列里的事务时有序的?逻辑时钟算法,每个事务在提交的时候都会生成一个时间戳的id,可以排序 )
    • 分配策略(如何保证不同worker之间的事务有序?):1. 更新同一行数据的两个事务,必须发到一个worker上 2. 同一个事务的也不能备拆开,必须分配到一个work中。
    • 解决了原先sql Thread单线程的瓶颈。

  • 搭建步骤
    • 准备主从两个mysql服务器,在主库上创建数据库,表,并插入数据
    • 修改vim /etc/my.cnf配置文件
      • lower_case_table_names=1 忽略大小写
      • log-bin=mysql-bin  开启binlog功能
      • server-id=1
      • binlog-do-db=test 只备份test数据库
      • binlog_ignore_db=dev忽略dev数据库
      • 不加binlog-do-db和binlog_ignore_db表示备份全部数据库
    • 重启mysql
    • 在主服务器上创建一个从服务器访问的用户账户,用replication slave赋权
    • 在从库上创建数据库,表,导入现有主库的数据
    • 修改从库的my.cnf的server-id,并重启
    • 配置从数据库访问主库的连接参数
    • 保证主从服务的auto.cnf配置的uuid不相同
    • 启动从服务器的复制进程,start slave (注意slave就是从服务访问主服务器的账户)
      • Show slave status查看状态,保证slave_io_running和slave_sql_running都是yes
      • 如果不是yes,就用show slave status \G进行排查
    • 在主库进行插入删除更新,看从库有无同步成功
  • 实现读写分离
    • 在Scheam.xml  逻辑数据库和对应的节点,(这里节点应该是一个)
    • 设定balance=1和writeType=0,比如保证从库读,主库写,并设定主从数据库的连接参数
    • 在mycat上创建逻辑库,这样在mycat读其实就是读的从节点的数据库,写就是写的主节点的数据库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422308.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注…

【数据库】MySQL-基础篇-SQL

专栏文章索引:数据库 有问题可私聊:QQ:3375119339 目录 一、SQL通用语法 二、SQL分类 三、DDL 1.数据库操作 1.1 查询所有数据库 1.2 查询当前数据库 1.3 创建数据库 1)案例: 1.4 删除数据库 1.5 切换数据库…

discuz论坛3.4 截图粘贴图片发帖后显示不正常问题

处理方法 source\function 路径下修改function_discuzcode.php function bbcodeurl($url, $tags) 函数 if(!in_array(strtolower(substr($url, 0, 6)), array(http:/, https:, ftp://, rtsp:/, mms://,data:i) 这一句里增加 data:i 即可 function bbcodeurl($url,…

JAVA基础:抽象类,接口,instanceof,类关系,克隆

1 JDK中的包 JDK JRE 开发工具集(javac.exe) JRE JVM java类库 JVM java 虚拟机 jdk中自带了许多的包(类) , 常用的有 java.lang 该包中的类,不需要引用,可以直接使用。 例如&#xff1…

Redis面试题整理

Redis 1、Redis主从集群 1.1、搭建主从集群 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离 1.2、主从同步原理 当主从第一次同步连接或断开重连时,从节点都会发送psync请求&…

即插即用篇 | YOLOv8 引入组装式Transformer模块AssembleFormer | arXiv 2024

本改进已同步到YOLO-Magic框架! 摘要—早期检测和准确诊断可以预测恶性疾病转化的风险,从而增加有效治疗的可能性。轻微的症状和小范围的感染区域是一种不祥的警告,是疾病早期诊断的重中之重。深度学习算法,如卷积神经网络(CNNs),已被用于分割自然或医学对象,显示出有希…

mp3转文字要怎么处理?使用这4个工具就对了

MP3是音频当中比较常用的格式,如果像将其转换成文字内容,一般的语音转文字工具都是可以完成的。但是音频转换成文字的过程中,它的准确率是会受到像口音,语言,环境音等因素的影响的。所以大家如果想将自己的mp3语音转成…

INIC6081量产工具下载,initio6081开卡软件分享

国内固态硬盘常用,且有量产工具流传出来的主控厂商包括慧荣、群联、点序、英韧、得一微、瑞昱、联芸、迈威、国科、华澜微等等。 每个主控需要用各自对应的量产工具,不同的量产工具支持的闪存颗粒也有差异,因此要根据固态硬盘实际的主控型号…

ESXI8.0 vsphere vcenter 多网卡多网段配置

一般来说服务器至少两块网卡,安装esxi后一种方案是利用闲置网卡建立多上传链路,聚合,另一种是配置多网段进行虚拟机隔离,网上也没找到讲的很清楚的,经过多种尝试终于学会,记录分享一下 首先物理交换机的随…

【idea-安装】

JetBrains官⽹ : https://www.jetbrains.com/ 1.下载idea安装包,下载旧一些的版本,避免新版本的不稳定。 下载下来的安装包是exe格式的,直接点击运行。 点击Next 2.选择要下载的位置,点击下一步。 3.选择⽣成快捷⽅式和建⽴⽂件…

Nginx怎么重新编译添加模块

转自 https://www.php.cn/faq/547300.html

linux_终端输入_几个提高效率的超有用配置

ubuntu为例: 1. 按上下键,补全历史指令 只输入一条历史命令的前几个字母,再按PageUp和PageDown键,就可以在以此字母为前缀的历史命令中上下切换。这个功能非常实用,而且比CTRLR使用起来更友善、更方便。遗憾的是&…

fastadmin 文件上传腾讯云

1-安装腾讯云SDK composer require qcloud/cos-sdk-v5 2-腾讯云配置 <?phpnamespace app\common\controller;use Qcloud\Cos\Client; use think\Controller; use think\Db;class Tencent extends Controller {/*** 上传文件* param $config* param $key* return array*/p…

《卷积神经网络 CNN 原理探秘》

CNN基本原理详解 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;是一种前馈神经网络&#xff0c;人工神经元可以响应周围单元&#xff0c;可以进行大型图像处理。卷积神经网络包括卷积层和池化层。 卷积神经网络是受…

Visual Studio 设置文件默认编码格式、行尾符等

文章目录 1.命令方式2.EditorConfig配置 1.命令方式 2.EditorConfig配置 微软官方文档 使用EditorConfig方式配置&#xff0c;无需Visual Studio软件自带对EditorConfig的支持&#xff0c;无需插件 将下面.editorconfig文件放在项目根目录下 root true # 所在目录是根目录…

外包干了三年,快要废了。。。

先简单说一下自己的情况&#xff0c;普通本科&#xff0c;在外包干了3年多的功能测试&#xff0c;这几年因为大环境不好&#xff0c;我整个人心惊胆战的&#xff0c;怕自己卷铺盖走人了&#xff0c;我感觉自己不能够在这样蹉跎下去了&#xff0c;长时间呆在一个舒适的环境真的会…

Ubuntu上安装libdc1394-22-dev出现无法定位安装包的解决办法

一、libdc1394-22-dev介绍 libdc1394-22-dev 是一个开发库&#xff0c;用于与IEEE 1394 (FireWire)摄像头进行交互。具体来说&#xff0c;它是 libdc1394 的开发版本&#xff0c;提供了开发者头文件和链接库&#xff0c;方便在应用程序中集成对基于 IEEE 1394 标准的数码相机的…

Java11环境安装(Windows)

目录 1 Java11安装2 配置2.1 JavaHome配置2.2 CLASSPATH配置PATH路径配置 3 验证 1 Java11安装 从官网下载Java11安装包&#xff1a;jdk-11_windows-x64_bin.exe,安装时选择安装到D:\Java目录。 安装完目录结构如下&#xff1a; 2 配置 2.1 JavaHome配置 如下图所示配置JAV…

【c++实现】统计上升四元组

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 &#x1f308;C专栏&#xff1a;C 文章目录 1. 题目描述2. 解释3. DP前缀和枚举 1. 题目描…

鸿蒙交互事件开发04——手势事件

1 概 述 手势事件是移动应用开发中最常见的事件之一&#xff0c;鸿蒙提供了一些方法来绑定手势事件。通过给各个组件绑定不同的手势事件&#xff0c;并设计事件的响应方式&#xff0c;当手势识别成功时&#xff0c;ArkUI框架将通过事件回调通知组件手势识别的结果。 …