数据库主从复制的原理

(八) 初入MySQL 【主从复制】 案例概况在企业应用中,成熟的业务通常数据量都比较大 单台MySQL在安全性、 高可用性和高并发方面都无法满足实际的需求 ,所以需要配置多台主从数据库服务器以实现读写分离来满足需求。 阅读详情
主从形式

 
mysql主从复制 灵活
  • 一主一从
  • 主主复制
  • 一主多从---扩展系统读取的性能,因为读是在从库读取的;
  • 多主一从---5.7开始支持
  • 联级复制---
 
 
用途及条件

 
mysql主从复制用途
  • 实时灾备,用于故障切换
  • 读写分离,提供查询服务
  • 备份,避免影响业务
 
主从部署必要条件:
  • 主库开启binlog日志(设置log-bin参数)
  • 主从server-id不同
  • 从库服务器能连通主库
 
主从原理

mysql主从复制原理
 

 

从库生成两个线程,一个I/O线程,一个SQL线程;
 
i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中;
主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;
 
SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致;
 
问题及解决方法

 
mysql主从复制存在的问题:
  • 主库宕机后,数据可能丢失
  • 从库只有一个sql Thread,主库写压力大,复制很可能延时
 
解决方法:
  • 半同步复制---解决数据丢失的问题
  • 并行复制----解决从库复制延迟的问题
 
半同步复制

 
mysql semi-sync(半同步复制)
半同步复制:
  • 5.5集成到mysql,以插件的形式存在,需要单独安装
  • 确保事务提交后binlog至少传输到一个从库
  • 不保证从库应用完这个事务的binlog
  • 性能有一定的降低,响应时间会更长
  • 网络异常或从库宕机,卡主主库,直到超时或从库恢复
 
主从复制--异步复制原理

 

半同步复制原理:
 

 

并行复制

 
mysql并行复制
  • 社区版5.6中新增
  • 并行是指从库多线程apply binlog
  • 库级别并行应用binlog,同一个库数据更改还是串行的(5.7版并行复制基于事务组)
设置
set global slave_parallel_workers=10;
设置sql线程数为10
 
 
其他

 
部分数据复制
主库添加参数:
binlog_do_db=db1
binlog_ignore_db=db1
binlog_ignore_db=db2
或从库添加参数
replicate_do_db=db1
replicate_ignore_db=db1
replicate_do_table=db1.t1
replicate_wild_do_table=db%.%
replicate_wild_ignore_table=db1.%
 
联级复制(常用)
A->B->C
B中添加参数:
log_slave_updates
B将把A的binlog记录到自己的binlog日志中

 

复制的监控:
show  slave status \G

 

复制出错处理
常见:1062(主键冲突),1032(记录不存在)
解决:
  • 手动处理
  • 跳过复制错误:set global sql_slave_skip_counter=1
 
 
 
总结

 
  • 主从形式
    • 一主一从
    • 一主多从--扩展系统读取性能
    • 多主一从--5.7开始支持
    • 主主复制
    • 联级复制
  • 用途:实时灾备的故障切换,读写分离,备份
  • 原理
    • 主:log dump线程传binlog;
    • 从
      • i/o线程接受读取binlog,并写入relay log文件
      • sql线程从relay log 文件中读取binlog并持久化
  • 问题及解决
    • 主库宕机后,数据丢失
      • 半同步复制
    • 主库写压力大,因从库只有一个sql 线程来持久化,复制可能延迟
      • 并行复制
  • 半同步复制:
    • 原理
      • 事务在主库写完binlog后需要从库返回一个已接受,才放回给客户端;
    • 5.5集成到mysql,以插件的形式存在,需要单独安装
    • 确保事务提交后binlog至少传输到一个从库
    • 不保证从库应用完成这个事务的binlog
    • 性能有一定的降低
    • 网络异常或从库宕机,卡主库,直到超时或从库恢复
  • 并行复制
    • 原理:从库多线程apply binlog
    • 在社区5.6中新增
    • 库级别并行应用binlog,同一个库数据更改还是串行的
    • 5.7版本并行复制基于事务组
  • 部分数据复制
  • 联级复制(常用)
    • A->B->C
    • B中添加参数log_slave_updates
    • B将把A的binlog记录到自己的binlog日志中
  • 复制的监控
    • show slave status
  • 复制出错处理
    • 常见:1062(主键冲突),1032(记录不存在)
    • 解决:
      • 手动处理
      • 跳过复制错误:set global sql_slave_skip_counter=1
  • mysql主从复制是mysql高可用性,高性能(负载均衡)的基础
  • 简单,灵活,部署方式多样,可以根据不同业务场景部署不同复制结构
  • 复制过程中应该时刻监控复制状态,复制出错或延时可能给系统造成影响
  • mysql主从复制目前也存在一些问题,可以根据需要部署复制增强功能
什么是主从复制? 阅读详情

相关推荐

MySQL数据库的基于GTID的主从复制原理和方法详解

一. mysql的主从复制 实验环境: 虚拟机名 功能 sever1 主库 server2 从库 主库配置(server1): 1.下载安装包并解压: tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar 2.安装需要的安装包,删除其他多余的安装包 3.复制安装包给server2 scp * root@172.25.77.2:...

chaos_oper的博客 2196

mysql 主从复制原理

主从形式 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的; 多主一从---5.7开始支持 联级复制--- 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlo...

1788

Mysql数据库主从复制+读写分离原理和配置

(2)读写分离原理 (分主从复制开启或关闭两种情况) 1、由至少一台主服务端和一台从服务端(可以多台从服务器,客户端会按照轮回顺序读取到从服务端数据;“轮回”大概意思就是按先后顺序,客户端读取到的是后操作的从服务端)和一台代理端和一台用户端(通过代理端连接到数据库进行读写操作)                        FTP yum源配置参考资料:https://blog.youkuaiyun.com/qq_46329367/article/details/12111846

weixin_46538690的博客 517

Mysql 主从复制的作用和原理

一、什么是主从复制? 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。您看,像在mysql数据库中,支持单项、异步赋值。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器。此时主服务器会将更新信息写入到一个特定的二进制文件中。并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录并发送到从服务器的更新中去。当一台从服务器连接到主服务器时,从服务器会通知主服务器从服务器的日志文件中读取最后一次成功更新的位置。然后从服务器会接收从哪个时刻

最帅程序猿的博客 1450

数据库主从复制原理详解

本文详细解析数据库主从复制机制,涵盖核心概念、工作流程和关键技术。主从复制通过主库记录binlog、从库IO线程获取日志、SQL线程重放变更实现数据同步。文章对比异步、半同步和全同步三种复制模式,推荐半同步+异步降级方案保障可靠性。同时介绍并行复制、延迟复制等高级特性,并提供数据校验、主从切换等常见问题解决方案。最后总结面试要点,建议结合具体数据库版本特性展现技术深度。全文系统阐述主从复制原理与实践,适用于数据库架构设计与运维场景。

hixiaoyang的博客 119

Windows 11下Dify安装部署实战指南

本文详细介绍在Windows 11环境下部署开源LLM应用开发平台Dify的完整流程。涵盖环境准备(WSL 2启用、Docker Desktop安装配置)、源码获取、Docker容器化部署、数据库初始化、服务启动验证等核心步骤。包括环境变量配置、性能优化、安全加固、端口冲突解决、数据库连接故障排查等关键技术要点。为开发者提供从零到一的Dify本地化部署实战指南

weixin_44269410的博客 851

一文搞懂MYSQL主从复制原理

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

Asaasa1的博客 1万+

重带电粒子的能量歧离(energy straggling)

能量歧离,Bethe-Bloch

G751888629的博客 2298

MySQL数据库的主从复制原理及其意义

MySQL数据库的主从复制原理及其意义 首先,我们要明确的一点是什么是数据库的主从复制?简单的来说,数据库由于自身的特点(脆弱性,不易维护),例如,突发事件停电,人为因素误删库,数据流量过大造成硬盘空间过满,sql语句设计不合理,等等因素,造成数据的丢失或者损坏以及无法及时存入数据,那么主从复制可能解决这些问题。 主从复制,指的是建立一个和主数据库环境一模一样...

zsk_john的技术分享专用博客 1981

Eps总结(1)——Eps入门级基本操作:新建工程、加载数据、新建对象、输入输出对象、基本操作

一、新建工程 1、点击工程的“新建” 2、选择比例尺,自定义工程名字,选择保存路径(最好是英文名字与路径) 二、加载本地倾斜影像、点云、超大影像(正射影像): 其中加载点云数据:a.首先需要将las点云转换为pcd格式。b然后才能加载点云。 三、新建点、线、面等对象 1、首先选择好要画的类型: 2、当选择好要画的类型后,不论是点、线、面都使用左侧工具条中的“一条线”进...

liukunrs的博客 4万+

基于STM32F103标准库与DMA的实时音频FFT频谱显示系统设计

本文详细介绍了基于STM32F103芯片与DMA技术实现实时音频FFT频谱显示系统的设计方法。通过标准库驱动和FFT算法处理音频信号,结合OLED显示屏实时绘制音乐频谱,涵盖硬件选型、核心原理、开发环境搭建及性能优化等关键步骤,为数字信号处理应用提供实用参考。

yellow的专栏 775

数据库——主从复制原理

原文:https://blog.youkuaiyun.com/php_younger/article/details/59673879 mysql 主从复制原理 形势: 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的; 多主一从---5.7开始支持 联级复制---     用途: 1)灾备 2)读写分离 3)数据备份   必要条件: 主库开启binlo...

JonWu0102的博客 8459

pytest学习和使用19-pytest断言失败后,怎样保持后续的断言继续执行?(pytest-assume)

【代码】pytest学习和使用19-pytes断言失败后,怎样保持后续的断言继续执行?

虫无涯的博客 1390

数据库主从复制的原理&集群搭建

本文主要介绍了构建数据库高可用集群时,主服务器和从服务器之间的主从复制的集体实现,利用了二进制日志的复制机制

qq_53980494的博客 1056

Agent 智能体学习指南:从入门到求职的完整路线

AI Agent 不是更长的 prompt,而是一类系统设计——模型在受控环境里观察状态、选择动作、调用工具、接收反馈。本文系统梳理 Agent 的 5 个核心概念、7 个关键模块(Goal/State/Context/Tools/Loop/Guardrails/Eval)、三条学习路线(工程落地/研究算法/求职作品)、框架选型策略(LangGraph/OpenAI Agents SDK/Pydantic AI 等场景推荐),以及可执行的 7 天最小项目计划(从概念到简历 bullet)。

program哲学 229

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

m0_58523831的博客 1万+

MySQL数据库主从复制(同步)原理

MySQL数据库主从复制(同步)原理。

RAB 2256

基于AI大模型实现自然语言转SQL、SQL解释、SQL优化和SQL转换

随着大数据和人工智能技术的发展,数据分析和数据挖掘在各行各业中的应用越来越广泛。SQL(Structured Query Language)作为关系数据库的查询语言,是数据分析的重要工具。然而,SQL语言的复杂性和专业性使得许多非技术背景的用户难以直接使用,阻碍了数据的广泛利用。为了降低SQL的使用门槛,许多研究者和企业开始探索如何通过自然语言处理(NLP)技术,将自然语言转化为SQL查询语句,从而让用户可以通过自然语言与数据库进行交互。

AI天才研究院 2239

数据库主从复制与读写分离原理介绍

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。 目录 主从同步原理图  mysq支持的复制类型  复制的工作过程  mysql读写分离原理 主从同步原理图  mysq支持的复制类型 1) 基于...

Fury97的博客 2750

visio安装包

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

数据库系列——Mysql主从复制作用和工作原理详解

简述 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库事务处理库,从库做查询库。 一、什么是主从复制 主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。在最常用的mysql数据库中,支持单项、异步赋值。在赋值过程中,一个服务器充当主服务器,而另外一台服务器充当从服务器;此时主服务器会将更新信息写入到一个特定的二进制文件中。 并会维护文件的一个索引用来跟踪日志循环。这个日志可以记录并发送到..

Coder_Boy_的博客 1927

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

数据库面试题:Mysql主从复制原理

Mysql主从复制原理 一. 主从复制概述 简单来说就是数据库集群,包括主数据库和从数据库。用户更新数据只去主数据库更新,查询数据只去从数据库查询。即更新操作仅在主数据库上,之后从数据库一起更新,查询操作仅在从数据库上。这样保证了读写分离,不会出现因为在高并发的情况下造成的读写冲突。 MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据

weixin_44844089的博客 1185

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据库 主从复制原理

MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能、更高可靠性要求的场合。与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少。 MySQL的Replication是一个异步复制的过程(mysql5.1.7以上版本分为异步复制和半同步两

Z小胖的博客 679

数据库主从复制原理与主从延时问题优化

https://www.cnblogs.com/phpper/p/8904169.html https://blog.youkuaiyun.com/zhanghan18333611647/article/details/91638443 一、MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: MySQL数据库主从同步延迟分析及解决方案 分为四步走: 主库对...

thatkrisyang 467

MYSQL数据库 主从复制原理及部署 适合初入MYSQL

目录原理主从知识扩展Mysql主从服务搭建(1)建立时间同步环境(2)编译安装MySQL数据库(3)登录Master主服务器配置 20.0.0.21(4)登录salve 从服务器配置(5)验证 原理 在企业网站中,后端MySQL数据库只有一台时,会有以下问题: 单点故障,服务不可用 无法处理大量的并发数据请求 数据丢失—大灾难 改造办法: 增加MySQL数据库服务器,对数据进行备份,形成主备 确保主备MySQL数据库服务器数据是一样的 主服务器宕机了,备份服务器继续工作,数据有保障 MySQL主从复制与读

CNFANG的博客 594

Mysql数据库的主从复制读写分离搭建过程与原理介绍

首先说明一下在搭建Mysql数据库的主从复制与读写分离的过程中十分容易出错,所以在搭建的过程中一定要谨慎注重每一步的细节。 传统数据库中存在的问题 1.传统数据库设计时,如果服务器宕机,将不能为用户提供服务导致整个系统崩溃. 2.如果数据库突然宕机.会导致数据丢失. 3.为了防止数据丢失,要进行实时备份 冷备份:通过数据库工具进行人为的导出sql.但是手动导出数据可能在中间节...

Major818的博客 6694
上一篇: linux的计划任务
下一篇: linux上搭建gitlab服务器
php_younger
博客等级 码龄10年 32粉丝 70原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值