mysql的主从复制

news2024/11/26 13:35:11

文章目录

    • 前言
    • 主备原理
    • binlog的三种格式
    • 循环复制问题
    • 主备的搭建
    • 总结

前言

mysql在日常中的使用是比较多的,大部分可能也都搭建过主从复制,或者集群模式。但是其中的原理不知道大家是否清楚。今天我们主要介绍的就是mysql主从复制的原理。

主备原理

主备复制的实现主要考的是binlog,通过主数据库binlog同步到副数据库,来实现主备之间的数据同步。如下图
在这里插入图片描述

在这里插入图片描述
第一张图是主备的一个模式,第二个图是实现数据同步的原理。
我们可以看出,在同步的过程中备库开启了两个线程,一个是iothread,这个线程是去主库进行数据复制(也就是同步binlog),另一个线程就是执行binlog,将数据插入到磁盘。

binlog的三种格式

binlog有三种格式,如下
1.statement
2.row
3.mixed

这三种格式各有各的特点
1.statement格式:binlog中保存的是你的原生sql。


mysql> delete from t /*comment*/  where a>=4 and t_modified<='2018-11-10' limit 1;

但是原生sql会有一个问题,就是如果是带有limit的sql,可能a和b的数据会出现不一致的情况。
如上面的sql,你如果走的不同的索引,可能对应的数据是不一样的,如果你a库走的是a索引,b库走的是t_modified索引。那么删除的数据是不一样的,这样a和b两个库的数据,就会出现不一致的情况。

2.row格式:这个格式中,binlog直接存储的是那一行的数据,这样就可以通过id去删除或者修改,肯定不会出现操作数据不一致的情况,也就不会出现a和b数据不一致的情况。

3.mixed格式:看这个名字大家就知道,这个就是上面两种格式的混合。

循环复制问题

假如有三个数据库a,b,c,a为主库,b也为主库,c为b和a的备库,b又为a的备库。这个时候就会出现一个问题,就是a执行一个数据操作,产生一条日志。然后将日志同步到b,这个时候b执行完,又会产生一条日志,同步到a。这样就是一直循环下去。
怎么解决循环日志呢,通过一个serverid,即可实现,然后要把a和b的serverid设置的不一样,且执行不是自己serverid的操作,不会产生自己serverid的日志。这样就能避免循环日志的问题。

主备的搭建

主备模式的搭建方式有很多,这里给大家简单介绍一种。大家可使用开源工具mycat,来实现主备模式,不管是一对一还是一堆多,都可以通过简单的配置进行实现。

总结

通过上面的介绍,大家可以发现,主备的实现,主要还是依赖binlog日志的归档能力。所以想要很好的理解主备的实现原理,必须要理解binlog日志。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Transformer对接公司需求的调研报告

1. 结构 从宏观的视角开始 首先将这个模型看成是一个黑箱操作。在机器翻译中&#xff0c;就是输入一种语言&#xff0c;输出另一种语言。 那么拆开这个黑箱&#xff0c;我们可以看到它是由编码组件、解码组件和它们之间的连接组成。 编码组件部分由一堆编码器&#xff08;enc…

Open vSwitch系列之数据结构解析深入分析ofpbuf

上一篇我们分析了hmap&#xff0c;hamp可以说是Open vSwitch中基石结构&#xff0c;很多Open vSwitch中数据结构都依赖hmap。本篇我们来分析一下ofpbuf&#xff0c;这个结构&#xff0c;我们从名字上就可得知&#xff0c;此数据结构用于存储数据的&#xff0c;比如收发OpenFlow…

1543_AURIX_TC275_CPU子系统_CPU内核实现特性

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这个章节看的信息应该是针对内核设计实现上TC275的具体实现特点&#xff0c;应该是覆盖了很多内核中的实施相关的特性的。 1. 在上下文功能支持上&#xff0c;P和更灵活一些。E核只支持DSP…

[附源码]Python计算机毕业设计SSM辽宁科技大学二手车交易平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

非常强,批处理框架 Spring Batch 就该这么用!(场景实战)

前言 概念词就不多说了&#xff0c;我简单地介绍下 &#xff0c; spring batch 是一个 方便使用的 较健全的 批处理 框架。 为什么说是方便使用的&#xff0c;因为这是 基于spring的一个框架&#xff0c;接入简单、易理解、流程分明。 为什么说是较健全的&#xff0c; 因为它…

NVIDIA 7th SkyHackathon(八)使用 Flask 与 Vue 开发 Web

1.页面效果 Web 采用 flaskvue 开发&#xff0c;效果图如下 2.后端 import sys import subprocess import os from PIL import Image from datetime import datetime from ASR_metrics import utils as metricsfrom werkzeug.wrappers import Request, Response from …

卡尔曼滤波:过滤随机游走

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 我们知道&#xff0c;随机游走序列是到当前时间为止白噪声实现(white noise realization)的简单求和。换句话说&#xff0c;随机游走序列中的对下一个时间点值的估计&#xff08;预测&#xff09;是通…

为什么程序员买不起房子?

很多人都说程序员的收入那么高&#xff0c;为什么程序员还是买不起房呢&#xff1f;其实不是程序员不想买&#xff0c;是真的买不起…… 拿北京为例。北京的房价可谓是越来越奇葩&#xff0c;不仅仅是因为银行政策导致贷款越来越难审批下来&#xff0c;更重要的是进入地产市场…

音频3A算法详解

一、音频3A技术背景 手机电脑等智能设备的普及,AI智能、5G等技术的不断发展,语音通信成为了最方便快捷的远程交流方式,会议全向麦克风、会议一体化终端等会议系统逐渐成为企业经营中的重要工具。语音质量决定了企业远程沟通协作效果,其中噪音和回声能够严重影响到语音预处理…

图扑软件获评 2022 年“火炬瞪羚企业”

厦门火炬高新区 2022 年“火炬瞪羚企业”名单公布&#xff0c;图扑软件经过层层遴选&#xff0c;成功入围&#xff0c;获评 2022 年“火炬瞪羚企业”称号。 在 2021 年&#xff0c;图扑软件已经凭借领先的技术实力和发展潜力&#xff0c;入选福建省数字经济领域“瞪羚”创新企业…

连续学习入门(二):连续学习的三种类型

说明&#xff1a;本系列文章若无特别说明&#xff0c;则在技术上将 Continual Learning&#xff08;连续学习&#xff09;等同于 Incremental Learning&#xff08;增量学习&#xff09;、Lifelong Learning&#xff08;终身学习&#xff09;&#xff0c;关于 Continual Learni…

Express操作MongoDB【一.Express框架通过Mongoose模块操作MongoDB数据库;二.在接口中间件中使用Mongoose模块】

目录 一.Express框架通过Mongoose模块操作MongoDB数据库 1.MongoDB数据库&#xff1a; &#xff08;1&#xff09;存放数据的格式&#xff1a;key:value &#xff08;2&#xff09;数据库&#xff08;database&#xff09;---集合&#xff08;collection&#xff09;---文档…

使用vite 搭建vue 3的项目

一、目标&#xff1a; 使用vite搭建一个Vue 3 的项目&#xff0c;并启动成功。 二、准备工作 首先你要有Node.js、VSCode编辑器、Chrome浏览器 关于下载的问题Node.js可以去官网下载 链接&#xff1a;http://nodejs.cn/download/ 下载左边的长期支持版本就好&#xff0c;最新版…

基于Haar-Like特征的人脸检测算法研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、Haar-Like 特征✳️ 三、人脸检测实验验证✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 脸是每个人最重要的外貌特征&#xff0c;随着科技推动社会不断向前发展&#xff0c;人脸识别也逐渐融入人们的生活中&#xff0c;例如在…

活动预告丨EMNLP 2022半监督和强化对话系统研讨会12月7日线上召开!

由清华大学和中国移动联合承办的EMNLP 2022 SereTOD Workshop “Towards Semi-Supervised and Reinforced Task-Oriented Dialog Systems&#xff08;迈向半监督和强化的任务型对话系统&#xff09;”&#xff0c;即将与EMNLP 2022主会同步举办。因受疫情影响&#xff0c;研讨会…

【蓝桥备战】前缀和+差分+高精度

文章目录前缀和差分大整数加减乘除前缀和 前缀和&#xff0c;即preSum[i] nums[i-1] nums[i-2] nums[0]。一般地&#xff0c;我们会让preSum[0] 0。 图&#xff1a;preSum[3] nums[2] nums[1] nums[0]。 构造前缀和数组对我们来说是简单的&#xff0c;只需要会用以下…

c++中的内存分区模型

内存分区模型 c程序在执行时&#xff0c;将内存大方向划分为4个区域1、代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理2、全局区&#xff1a;存放全局变量和静态变量以及常量3、栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&…

手把手教你使用Vue3指定状态管理库--Pinia

什么是 Pinia Pinia 与 Vuex 一样&#xff0c;是作为 Vue 的“状态存储库”&#xff0c;用来实现 跨页面/组件 形式的数据状态共享。 在平时的开发过程中&#xff0c;Vue 组件之间可以通过 Props 和 Events 实现组件之间的消息传递&#xff0c;对于跨层级的组件也可以通过 Ev…

Java并发编程实战读书笔记三

第七章 取消和关闭 Java没有提供任何机制来安全的终止线程&#xff0c;虽然 Thread.stop 和 suspend 等方法提供了这样的机制&#xff0c;但由于存在着一些严重的陷&#xff0c;因此应该避免使用 7.1任务取消 7.1.1 中断 取消任务中生产者使用了队列的put操作导致阻塞后任务…

day14_类中成员之构造器

由来 我们发现我们new完对象时&#xff0c;所有成员变量都是默认值&#xff0c;如果我们需要赋别的值&#xff0c;需要挨个为它们再赋值&#xff0c;太麻烦了。我们能不能在new对象时&#xff0c;直接为当前对象的某个或所有成员变量直接赋值呢。可以&#xff0c;Java给我们提…