MySQL的主从复制

【MySQL】主从复制 MySQL是一款关系型数据库,被广泛应用于各种互联网应用中。随着业务的不断扩大,数据量不断增加,如何让MySQL具有更好的可用性和容灾能力成为了越来越重要的问题。本文将重点介绍MySQL主从复制和高可用性的实现,旨在为MySQL的使用者提供指导和帮助。本篇博客介绍了MySQL高可用性的常见解决方案,包括负载均衡、主从复制、主主复制以及结合MHA和Galera Cluster的整合方案。高可用性对于数据库系统至关重要,它可以确保用户的请求始终得以满足,并且降低系统停机时间的风险。 阅读详情

MySQL 主从复制详解

MySQL 的主从复制是一种用来实现数据同步的机制,可以将一个 MySQL 实例的数据同步到一个或多个从库(Slave)实例中。它广泛应用于数据备份、高可用架构、读写分离、负载均衡等场景。


1. 主从复制的基本概念

  • 主库(Master):

    • 负责接收客户端的所有写操作(INSERT、UPDATE、DELETE 等)。
    • 记录所有变更到 Binlog(Binary Log) 中。
  • 从库(Slave):

    • 从主库获取 Binlog 并重放(Replay),以实现数据同步。
    • 通常只接受读请求(只读模式),提高系统的读性能。
  • 复制类型:

    • 异步复制(Asynchronous Replication):
      • 主库在执行事务后不等待从库完成同步,即认为事务已提交。
      • 从库的延迟可能较大,但对主库性能影响较小。
    • 半同步复制(Semi-Synchronous Replication):
      • 主库在事务提交时会等待至少一个从库确认接收到 Binlog。
      • 提高数据可靠性,但增加写操作延迟。
    • 全同步复制(Synchronous Replication):
      • 主库只有在所有从库都完成同步后才会提交事务。
      • 几乎不常用,因为性能开销巨大。

2. 主从复制的工作流程

步骤 1:主库记录变更
  • 主库执行写操作时,将变更记录写入 Binlog。
步骤 2:从库拉取 Binlog
  • 从库通过 I/O 线程 从主库读取 Binlog,并存储到本地的 Relay Log(中继日志)。
步骤 3:从库重放 Relay Log
  • 从库的 SQL 线程 解析并执行 Relay Log 中的语句,将数据同步到从库。

3. 主从复制的核心组件

1. Binlog(主库的二进制日志)
  • 主库记录所有数据变更操作(基于语句或行的变更记录)。
  • 通过 Binlog,主库能够告知从库需要同步的内容。
2. Relay Log(从库的中继日志)
  • 从库 I/O 线程从主库拉取的 Binlog 被存储在本地。
  • Relay Log 是从库在执行同步操作时的临时数据文件。
3. 线程
  • 主库的 Binlog Dump 线程:
    • 负责向从库传输 Binlog 数据。
  • 从库的 I/O 线程:
    • 连接主库并拉取 Binlog 数据,写入 Relay Log。
  • 从库的 SQL 线程:
    • 读取 Relay Log 并重放,完成数据同步。

4. 主从复制的配置步骤

步骤 1:配置主库
  1. 开启 Binlog 日志: 在主库的 my.cnf 文件中添加以下内容:

    
    

    ini

    [mysqld] log-bin=mysql-bin server-id=1

    • log-bin:开启 Binlog。
    • server-id:每个 MySQL 实例的唯一标识。
  2. 创建复制用户:

    
    

    sql

    复制代码

    CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES;

  3. 获取主库状态:

    
    

    sql

    SHOW MASTER STATUS;

    输出示例:

    
    

    diff

    +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB| +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 120 | | | +------------------+----------+--------------+------------------+

    记录 File 和 Position 值。

步骤 2:配置从库
  1. 设置从库的唯一 ID: 在从库的 my.cnf 文件中添加:

    
    

    ini

    复制代码

    [mysqld] server-id=2 relay-log=relay-bin log-bin=mysql-bin

  2. 连接主库并开始复制: 登录从库,执行以下命令:

    
    

    sql

    CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=120;

  3. 启动复制:

    
    

    sql

    START SLAVE; SHOW SLAVE STATUS\G;

步骤 3:验证主从复制
  • 在主库执行写操作后,从库中检查数据是否同步。

5. 主从复制的模式

1. 单主单从
  • 一个主库对应一个从库。
2. 单主多从
  • 一个主库对应多个从库,常用于读写分离或高可用。
3. 多主单从
  • 多个主库的数据同步到一个从库(通过多源复制)。
4. 主主复制(双主模式)
  • 两个主库互为从库,常用于容灾或高可用。

6. 主从复制的优缺点

优点
  1. 提高数据可靠性:主从库同步备份,避免单点故障。
  2. 支持读写分离:主库负责写操作,从库负责读操作。
  3. 易于扩展:通过添加从库,扩展系统读性能。
缺点
  1. 延迟问题:从库的同步可能存在延迟。
  2. 数据一致性风险:主库故障或从库延迟可能导致数据不一致。
  3. 管理复杂性:多从库或复杂拓扑需要额外的监控和维护。

7. 主从复制的优化

  1. 优化网络传输:

    • 使用压缩传输 Binlog 减少带宽占用。
  2. 减少从库延迟:

    • 增加从库 SQL 线程数量(仅适用于并行复制)。
    • 优化从库硬件性能。
  3. 监控复制状态:

    • 定期检查 SHOW SLAVE STATUS,确保 Seconds_Behind_Master 不超出预期范围。

8. 主从复制的实际场景

  • 高可用:

    • 主库故障时可以快速切换到从库,确保业务连续性。
  • 读写分离:

    • 主库处理写请求,从库处理读请求,提升系统性能。
  • 数据备份:

    • 在从库上执行备份操作,避免影响主库性能。
  • 容灾恢复:

    • 在异地部署从库,保证灾难恢复能力。
Isaac Sim 车辆动力学:从参数调优到户外仿真的挑战与实战 本文深入探讨了Isaac Sim在车辆动力学仿真中的应用,从参数调优到户外场景模拟的实战经验。详细解析了悬架系统、轮胎物理模型等核心参数的设置技巧,并分享了应对户外仿真挑战的实用方案。通过Vehicle Wizard高级使用和传感器配置,帮助开发者高效完成车辆仿真与算法开发。 阅读详情

相关推荐

SpringBoot 自定义注解来实现动态切换数据源

/ 初始化数据源@Override@Inherited@Pointcut(“@annotation(包名.aop.DataSource)”) public void@Pointcut 注解定义了一个切点,名称为 dynamicDataSource。@annotation(包名.aop.DataSource) 表示这个切点匹配所有带有 @DataSource 注解的方法。

晴天飛 雪的博客 1838

Mysql 数据库 主从数据库 (主从)(主主)

一、什么是主从数据库 主从数据库就是把数据库架构分为主数据库和从数据库。从数据库是主数据库的备份,以提高数据的安全性,不至于一个数据库崩掉而导致整个项目也运行不起来。可以有效的防止财产的损失。一般从库只做查询操作,而主库则做更改操作,也就是所谓的读写分离。 二、什么是主主数据库 所谓的主主,其实也就是两个数据库互为主从。两个库都可以对数据库进行更改和读写操作,个人感觉是主从数据库的进化版,更加的实用,但是不足之处就是,如果有自增主键的话,很大可以会产生主键冲突,所以就需要一定的算法进行改进。 三

qq_53840970的博客 1万+

FT601Q芯片深度解析:从USB3.0引脚定义到FPGA FIFO协议实战选型

本文深入解析FT601Q芯片在USB3.0接口设计与FPGA协议栈开发中的应用,详细介绍了USB3.0引脚定义、FT601Q芯片架构、245同步FIFO模式及硬件设计要点,帮助工程师实现高速数据传输系统。

weixin_30607659的博客 447

mysql基础5——mysql主从

mysql主从原理实操说明

百慕卿君博客 4914

手把手教你用VSCode+SDL在Ubuntu上跑LVGL8.2模拟器(附插件清单)

本文详细介绍了在Ubuntu系统上使用VSCode和SDL库搭建LVGL8.2模拟器环境的完整流程,特别适合嵌入式开发者(如全志F1C100s平台)进行UI设计验证。从环境配置、项目编译到VSCode深度集成,提供了实用技巧和常见问题解决方案,帮助开发者实现'先模拟后真机'的高效开发模式。

weixin_33737134的博客 358

Mamba-YOLO实战:环境配置+模型训练+精度调优全流程指南(附Colab代码)

在目标检测领域,一场由状态空间模型引发的技术革新正在悄然改写行业格局。近期国际顶级学术期刊连续发布的YOLOv5_mamba、FER-YOLO等突破性成果,不仅刷新了检测精度记录,更开创了结构化状态空间模型(SSM)与经典检测框架的创新融合范式。当前该领域涌现的十大标杆性研究,已在以下维度取得突破性进展:√ 遮挡目标识别准确率提升38%√ 小样本场景泛化能力增强2.7倍√ 视频流检测延迟降低至17ms√ 多目标交叉干扰抑制效果达SOTA。

2501_90555291的博客 1581

mysql主从复制配置

主从复制1、复制的基本原理2、复制的基本原则3、复制的最大问题4、配置1、主机配置2、从机配置 1、复制的基本原理 2、复制的基本原则 每个slave只有一个master 每个slave只能有一个唯一的服务器ID 每个master可以有多个slave 3、复制的最大问题 数据同步到从机延时 4、配置 mysql版本要求一致且后台以服务运行 主从都配置在[mysqld]结点下,都是小写 1、主机配置 主机修改my.cnf配置文件 # 主从复制配置如下 #主服务器唯一Id[必填] server-id=1

qq_48721706的博客 7374

保姆级教程:用Python+Mediapipe实时捕捉手势,驱动Unity虚拟手模型(附完整源码)

本文详细介绍了如何利用Python的Mediapipe库和Unity实现实时手势识别与虚拟手模型驱动。通过OpenCV进行图像采集,Mediapipe提供21个手部关键点识别,结合UDP通信协议实现Python与Unity之间的低延迟数据传输。教程包含完整源码、环境配置、核心代码实现及性能优化技巧,适用于VR教育、游戏开发等需要自然交互的场景。

weixin_42531779的博客 361

MySQL主从复制配置

MySQL主从配置

爱喝星冰乐的博客 2824

编译原理考试大题分析【太原理工大学】

看完本篇大题拿 85% 的分应该没问题,TYUT 太原理工大学编译原理期末考试。

m0_52861684的博客 1万+

YOLOv8改进 | 特殊场景检测篇 | 最新的多尺度特征提取DICAM(全网独家首发,增强水下图像的质量)

本文给大家带来的最新改进机制是多尺度特征提取和通道注意力机制DICAM,深度Inception和通道注意力模块(DICAM)主要用于用于增强水下图像的质量、对比度和色偏。所提出的DICAM模型考虑了水下图像的比例退化和不均匀色偏,从而提高图像的质量。通过在两个公开的水下图像增强数据集上的广泛实验,验证了提出的模型在全参考和无参考图像质量评估指标方面。欢迎大家订阅我的专栏一起学习YOLO,购买专栏读者联系读者入群获取进阶项目文件!

Snu77的博客 2216

MySQL主从复制

一、MySQL主从复制原理 在实际的生产中,为了解决Mysql的单点故障已经提高MySQL的整体服务性能,一般都会采用「主从复制」。 比如:在复杂的业务系统中,有一句sql执行后导致锁表,并且这条sql的的执行时间有比较长,那么此sql执行的期间导致服务不可用,这样就会严重影响用户的体验度。 主从复制中分为「主服务器(master)「和」从服务器(slave)」,「主服务器负责写,而从服务器负责读」,Mysql的主从复制的过程是一个「异步的过程」。 这样读写分离的过程能够是整体的服务性能提高,即使写操作时间

m0_62473957的博客 2万+

R语言LASSO回归作图为什么X轴使用-log(λ)而不是log(λ),如何转化为log(λ)?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1015

MySQL——主从复制

从服务器上面启动一个I/O线程, 连接到主服务器上面请求读取二进制(Bin-log)日志,然后把读取到的二进制日志写到本地的Realy-log(中继日志)里面。主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。分析 - 可以在主服务器上创建实时数据,而信息分析可以在从服务器上进行,而不会影响主服务器的性能。执行此过程后,在主服务上操作的修改数据的操作都会在从服务器中执行一遍,这样就保证了数据的一致性。

xjm2001的博客 2131

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【MySql】 搭建主从复制

主从复制是指将主库的数据变更同步到从库,从而保证主库和从库数据一致,可用于数据备份、失败迁移、读写分离、降低单库读写压力等场景。对于面向大企业的B端产品而言,主从复制技术尤为重要。

精益求精 2035

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MySql主从复制原理

1、什么是主从复制?概念 主从复制是用来建立一个和 主数据库完全一样的数据库环境称为从数据库;主数据库一般是准实时的业务数据库。2、主从复制作用我们来思考如果在企业网站中,后端MYSQL数据库只有一台时候,会有以下问题:1、单点故障服务不可用2、无法处理大量的并发数据请求3、数据丢失所以通过主从复制后,它的优点就很明显1、如果主节点出现故障,那么我们就直接将服务切到从节点,来保证服务立马可用。2、如果并发请求特别大的时候,我们可用进行读写分离操作,让主库负责写,从库负责读。

qq_37436172的博客 3638

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MySQL-主从复制

MySQL-主从复制

我姓谭却弹不死你的博客 1416

MySQL的主从复制原理

一、主从复制概念 二、读写分离的概念 三、主库和从库 1. 主库 2. 从库 四、主从复制的流程 五、主从复制效果展示

qq_41721746的博客 2653

mysql主从复制

本文介绍了MySQL主从复制的配置方法,主要包括主从复制的功能优势(数据备份和读写分离)、docker-compose部署方案、主从服务器的配置

demon7552003的小本本 1185
上一篇: java反射详讲
下一篇: MySQL innodb中一条sql的执行流程
sevevty-seven
博客等级 码龄2年 757粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值