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

【MySQL】主从同步原理、分库分表

主从同步原理

1. 主从同步原理

在这里插入图片描述

在这里插入图片描述

MySQL 经常先把命令拷入硬盘的日志,再执行日志的命令,这样的好处:

  1. 日志的位置固定,拷入硬盘的开销不大;
  2. 将命令先准备好,而不是边读边执行,性能更好,不容易出错;
  3. 日志可以在合适的时机执行,还可以分发给其他的节点,这样同一份命令由一个节点读取即可;
  4. 宕机重启时,relay log 可以从 binlog 对应的位置开始读,从 relay log 对应的位置开始写入;

不是复用 redo log,职责和生命周期不同!

回答:

  • MySQL 主从复制的核心就是主节点的二进制日志 binlog (DDL 和 DML 语句的记录);
  • 主库在事务提交时,会把数据变更记录在二进制日志文件 binlog 中;
  • 从库读取主库的二进制日志文件 binlog,写入到从库的中继日志 relay log;
  • 从库重做中继日志中的事件,将改变反映它自己的数据。

分库分表

1. 你们项目用到过分库分表吗?

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

特点:

  1. 按照业务对数据进行分级管理、维护、监控、扩展;
  2. 在高并发下,提高磁盘 IO 和网络数据量的连接数;(不同业务可以连接不同的数据库,对应的数据库磁盘利用率提高,提高数据量的连接数,因为不会因为别的业务的繁忙而不能连接此数据库)

在这里插入图片描述

特点:

  1. 冷热数据分离;
  2. 减少 IO 过度争抢,两表互不影响(处理外键约束);
    在这里插入图片描述

特点:

  1. 很直接的方式解决了单库大数量,高并发的性能瓶颈问题;
  2. 均匀的分库提高了系统的稳定性和可用性;

路由规则:

  • 根据 id 节点取模;
  • 根据 id 节点进行范围路由,节点1(1 - 100w),节点2(100w - 200w);

在这里插入图片描述

特点:

  1. 优化单一表数据量过大而产生的性能问题;
  2. 避免 IO 争抢并减少锁数据行的几率;

新的问题和新的技术:

在这里插入图片描述

分库之后的问题:

  • 分布式事务一致性问题;
  • 跨节点关联查询;
  • 跨节点分页、排序函数;
  • 主键避重;

在这里插入图片描述

分库分表中间件:

  • mycat;
  • sharding-sphere

至于中间件怎么实现与解决的感兴趣再了解,知道这个技术可以处理即可,交给它吧~

回答:

  • 业务介绍
    1. 根据自己的简历上的项目,像一个数据量大的较大业务场景(请求较多或者业务累计量大)
    2. 达到了什么样的量级(单表 1000w 或者超过 20G)
  • 具体拆分策略
    1. 水平分库,将一个库的数据拆分到多个库中,解决海量数据存储和高并发的问题;
    2. 水平分库,解决单库存储和性能的问题;
    3. 垂直分库,根据业务进行拆分,高并发下提高磁盘 IO 和网络连接数;
    4. 垂直分表,冷热数据分离,多表基本互不影响;
  • 基本上是以垂直分库和垂直分表为主;如果业务需要,再在垂直拆分的基础上做水平拆分;
    发下提高磁盘 IO 和网络连接数;**
    4. 垂直分表,冷热数据分离,多表基本互不影响;
  • 基本上是以垂直分库和垂直分表为主;如果业务需要,再在垂直拆分的基础上做水平拆分;
  • 而我觉得还是以垂直分库、垂直分表根据适合此业务场景;

相关文章:

【MySQL】主从同步原理、分库分表

主从同步原理 1. 主从同步原理 MySQL 经常先把命令拷入硬盘的日志,再执行日志的命令,这样的好处: 日志的位置固定,拷入硬盘的开销不大;将命令先准备好,而不是边读边执行,性能更好,…...

uniapp如何实现关闭前面指定数目页面

需求 : 路由从 页面A -> 页面B-> 页面C-> 页面D 我希望在 页面C跳到页面CD 后 在页面D 中 点击返回(物理键或是代码返回),直接返回到A,而不是页面C 所以我需要把BC页面给销毁掉 以下是我的实现思路,在h…...

使用 Helm 安装 极狐GitLab

本篇作者 徐晓伟 使用 Helm 简便快捷的部署与管理 极狐GitLab 前提条件 k8s 完成 helm 的配置 k8s 完成 ingress 的配置 内存至少 10G 演示环境是 龙蜥 Anolis 8.4(即:CentOS 8.4)最小化安装k8s 版本 1.28.2calico 版本 3.26.1nginx ingre…...

K8S部署postgresql

(作者:陈玓玏) 一、前置条件 已部署k8s,服务端版本为1.21.14 二、部署postgresql 拉取镜像,docker pull postgres,不指定版本,自动从docker hub拉取最新版本;配置configmap&…...

Go 如何控制并发的goroutine数量?

为什么要控制goroutine并发的数量? 在开发过程中,如果不对goroutine加以控制而进行滥用的话,可能会导致服务整体崩溃。比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来。 用什么方法控制goroutine并发的数量&a…...

【黑马程序员】1、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址:【黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1、TypeScript介绍 1.1 TypeScript是什…...

JS进阶——深入对象

构造函数 封装是面向对象思想中比较重要的一部分,js面向对象可以通过构造函数实现的封装。 前面我们学过的构造函数方法很好用,但是 存在浪费内存的问题 原型 目标:能够利用原型对象实现方法共享 构造函数通过原型分配的函数是所有对象所…...

Gitlab部署管理

一、安装 1.docker安装gitlab sudo docker run -d \-p 6080:80 -p 6022:22 \--name gitlab \--restart always \-v /srv/gitlab/config:/etc/gitlab \-v /srv/gitlab/logs:/var/log/gitlab \-v /srv/gitlab/data:/var/opt/gitlab \gitlab/gitlab-ce:latest2.存储说明 存储应…...

MyBatis 学习(二)之 第一个 MyBatis 案例

目录 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中创建一张表 3 创建一个基于 Maven 的 JavaWeb 工程 4 编写 User 实体类 5 创建 Mybatis 全局配置文件 6 编写一个 DAO 或 Mapper 接口 7 编写 SQL 映射配置文件&#…...

30天自制操作系统(第21天)

21.1 攻克难题——字符串显示API 显示单个字符时,用 [CS:ECX] 的方式特意指定了 CS(代码段寄存器),因此可以成功读取 msg的内容。但在显示字符串时,由于无法指定段地址,程序误以为是 DS而从完全错误的内存地…...

linux系统Jenkins的安装

Jenkins安装 安装上传安装包解压包首次登录要去服务器查看密码,更改密码选择需要安装的插件设置Admin用户和密码安装完成 安装 上传安装包 上传 jdk17 tomcat jenkins.war的安装包 . 上传 tomcat安装包解压包 解压jdk tar xf jdk-11.0.18_linux-x64_bin.tar.gz解…...

【GStreamer】basic-tutorial-1:GstBus、GstMessage详解

【目录】郭老二博文之:图像视频汇总 1、先看示例 #include <gst/gst.h>int main (int argc, char *argv[]) {GstElement *pipeline;GstBus...

Python中的可变变量与不可变变量

python中的可变与不可变变量 一、变量的三个参数 就像区分一个人一样&#xff0c;同样都是张三&#xff0c;可能这个张三就不是那个张三。同一个变量是指的什么相同呢&#xff1f; Python中的对象包含三个要素&#xff0c;id&#xff08;内存地址&#xff09;&#xff0c;typ…...

OpenGL调用窗口,方向键和鼠标

9.2 OpenGL调用窗口&#xff0c;方向键和鼠标 9.2.1 opengl调用窗口 OpenGL调用窗口步骤&#xff1a; 第一步&#xff1a;初始化 GLFW&#xff0c;初始化OpenGL,初始化窗口&#xff0c;初始化上下文 第二步&#xff1a;设置窗口大小和位置&#xff0c;设置输入输出 第三步…...

fastAdmin表格列表的功能

更多文章&#xff0c;请关注&#xff1a;fastAdmin后台功能详解 | 夜空中最亮的星 FastAdmin是一款基于ThinkPHP5Bootstrap的极速后台开发框架。优点见开发文档 介绍 - FastAdmin框架文档 - FastAdmin开发文档 在这里上传几张优秀的快速入门图: 一张图解析FastAdmin中的表格列…...

用来检查 CUDA、Conda 和 PyTorch 的版本的python文件

提供的 Python 代码片段包括几个语句&#xff0c;用来检查 CUDA、Conda 和 PyTorch 的版本&#xff0c;以及一些与 CUDA 相关的系统配置。让我们分解一下&#xff1a;PyTorch 版本和配置&#xff1a;torch.__config__.show()&#xff1a;显示 PyTorch 的构建配置。 torch.__ver…...

基于Redisson,实现分布式锁注解

1.原始写法 我们平常使用redisson的分布式锁是不是基本都用下面的这个模板&#xff0c;既然是模板&#xff0c;那为何不把他抽出来呢&#xff1f; // 尝试加锁&#xff0c;最多等待100秒&#xff0c;上锁以后10秒自动解锁 boolean res lock.tryLock(100, 10, TimeUnit.SECON…...

【机器学习】机器学习是什么?

你知道机器学习是什么吗&#xff1f;它就像是一个超级聪明的孩子&#xff0c;可以通过观察和经验不断学习和成长。而我们要做的就是培养和教育这个孩子&#xff0c;让他能够从数据中学习并做出决策和预测。 那么&#xff0c;我们该如何培养和教育这个聪明的孩子呢&#xff1f;首…...

一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人

一文速览深度伪造检测&#xff08;Detection of Deepfakes&#xff09;&#xff1a;未来技术的守门人 前言一、Deepfakes技术原理卷积神经网络&#xff08;CNN&#xff09;&#xff1a;细致的艺术学徒生成对抗网络&#xff08;GAN&#xff09;&#xff1a;画家与评审的双重角色…...

C# 中的执行表达式树(Expression Tree)

引言&#xff1a; 在C#编程中&#xff0c;表达式树&#xff08;Expression Tree&#xff09;是一种强大的工具&#xff0c;用于表示和执行计算表达式。表达式树将计算表达式抽象为树状结构&#xff0c;每个节点代表表达式中的一个元素&#xff0c;如常量、变量、方法调用等。本…...

3步解锁网易云音乐NCM文件:小白也能懂的完整解密教程

3步解锁网易云音乐NCM文件&#xff1a;小白也能懂的完整解密教程 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经在网易云音乐下载了心爱的歌曲&#xff0c;却发现在其他设备上无法播放&#xff1f;那些看似属于你的音乐文…...

保姆级教程:用GMT6.1绘制专业地形起伏图(从数据下载到出图避坑)

零基础实战&#xff1a;用GMT6.1绘制科研级地形图的完整指南 第一次打开GMT时&#xff0c;面对满屏的命令行参数&#xff0c;我盯着屏幕发呆了半小时——这像极了刚学编程时面对"Hello World"的茫然。但当我终于生成第一张带有自定义光照效果的地形图时&#xff0c;…...

重构设计工作流:HTML到Figma的智能转换技术解析

重构设计工作流&#xff1a;HTML到Figma的智能转换技术解析 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 在数字产品开发的现代工作流中&#xff0c;设计与代码之间的鸿沟一直是…...

【时序预测】“剥洋葱”式深度集成:基于 SARIMA + XGBoost + LSTM 的出租车客运量预测

1. 核心痛点&#xff1a;为什么单一模型会失效&#xff1f; 出租车乘客量的波动并非简单的随机过程&#xff0c;而是三种力量交织的产物&#xff1a; 线性骨架&#xff1a;周而复始的日/周季节性规律&#xff08;如早晚高峰&#xff09;。 非线性扰动&#xff1a;外部环境&am…...

SAP硬件选择详解:服务器、存储与网络的全面解析

硬件作为SAP系统的基石&#xff0c;涵盖了服务器、磁盘存储系统以及网络设备等多个组件。硬件包括服务器、存储、网络设备&#xff0c;共同构建SAP架构。这些硬件组件必须协同工作&#xff0c;才能构建出高效稳定的SAP基础架构。选择硬件提供商的重要性不容忽视。选择提供商要考…...

Phi-4-mini-reasoning 3.8B 智能文档处理:Typora风格Markdown内容自动生成

Phi-4-mini-reasoning 3.8B 智能文档处理&#xff1a;Typora风格Markdown内容自动生成 1. 场景痛点&#xff1a;Markdown写作的效率瓶颈 对于技术写作者、博客作者和文档工程师来说&#xff0c;Markdown已经成为事实上的标准写作格式。而Typora以其简洁优雅的所见即所得体验&…...

单片机实战解析:从时序到代码,手把手实现DS18B20温度采集

1. DS18B20温度传感器基础认知 第一次接触DS18B20时&#xff0c;我对着这个三根引脚的金属探头愣了半天——这么简单的结构真能实现高精度测温&#xff1f;后来在项目里实测发现&#xff0c;这款数字温度传感器不仅测量范围广&#xff08;-55C到125C&#xff09;&#xff0c;精…...

WinUtil:告别Windows系统臃肿烦恼,一键打造流畅高效的操作体验

WinUtil&#xff1a;告别Windows系统臃肿烦恼&#xff0c;一键打造流畅高效的操作体验 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否…...

从元器件到高速PCB:我的硬件工程师书单升级之路(附避坑指南)

从元器件到高速PCB&#xff1a;我的硬件工程师书单升级之路&#xff08;附避坑指南&#xff09; 记得刚入行时&#xff0c;面对琳琅满目的技术书籍和软件工具&#xff0c;我常陷入选择困难——是该先啃透《电路原理》这样的经典教材&#xff0c;还是直接上手《Cadence高速电路设…...

终极指南:Gamescope三大后端架构解析 - DRM、SDL与Wayland实现原理深度剖析

终极指南&#xff1a;Gamescope三大后端架构解析 - DRM、SDL与Wayland实现原理深度剖析 【免费下载链接】gamescope SteamOS session compositing window manager 项目地址: https://gitcode.com/gh_mirrors/ga/gamescope Gamescope作为SteamOS的核心窗口管理器&#xf…...