Msql 主从原理介绍-通俗易懂
思想:
- 主服务器(master) 接受用户的内容更新,并写入bin-log中
- 一个或多个从服务器(slave) ,接受来自 主服务器的 binlog 日志文件(I/O 线程), 解析出sql(sql 线程),
- 重新更新到服务器(slave),完成数据的一致(sql 线程)
主从服务器应用场景:
- 更好的支持大规模高并发读写
- 主服务器实现读写分离, 从服务器实现负载均衡(lvs)
- 数据库读写分离架构
- 更有效的保护物理服务器宕机场景下的数据备份
- 从服务器 作为 主服务器的实时数据备份
主从同步的原理:
mysql 的主从复制是一个 异步 的复制过程,(虽然一般情况下感觉是实时的), 数据将从一个 mysql 数据库( 我们称为 master) 复制到另一个 mysql数据库( 我们称之为 slave)
在 master 与 slave 之间实现整个主从复制的过程是由3个 线程参与完成的
一个线程在 moster端口 ( I/O 线程), 两个线程在 slave端 (一个 sql 线程, 一个i/o线程)
要实现mysql 的主从复制功能,首先必须打开 master 端的 bin-log 记录功能, 否则无法实现, 因为整个复制过程实际上就是 slave 从 master 端获取 binlog 日志,然后在 slace 上以相同的顺序执行获取 binlog 日志中的所记录的各种sql操作。
1、如何打开 master 的binlog 记录功能
master 服务器的 mysql 配置文件, my.cnf, 添加信息如下
[mysqld]
log-bin = /data/3306/mysql-bin
mysql Replication 主从复制原理箱体过程描述
- 在 slave 服务器上 执行 start slave 命令,开启复制开关,开始进行主从复制
- 此时, slave 服务器的 I/O 线程会通过 master 上 已经授权的复制用户权限 请求连接 master 服务器, 并请求从指定 binlog 日志文件的指定位置 (日志文件名和位置就是在配置主从复制服务时执行 change master 命令指定的)之后开始发送 binlog 日志内容,
- master 服务器接收到来自 slave 服务器的 I/O 线程的请求后, master 上负责复制的 I/O 线程会根据 slave 服务器的 I/O 线程请求的信息分批读取指定 binlog 日志文件指定位置之后的 binlog 日志信息, 然后返回给 slave 端的 I/O 线程。
- 返回的信息有
- binlog 日志信息
- master 服务器记录的新的 binlog 文件名称,以及在新的 binlog 中的下一个指定更新位置
- 返回的信息有
- 当 slave 服务器的 i/o 线程 获取到 master 服务器上的 I/0 线程发送的日志内容(日志文件 和 日志位置点)后,
- 1. 会将 binlog 日志内容 依次 写到 slave 端 自身的 relay log (中继日志)文件的最末端,格式: mysql-relay-bin.xxxx,
- 2.将新的 bin-log 文件名 和文件位置 记录到 master-info 文件中, 以便一下次读取master 端 bin-log 日志时能够告诉 master 服务器 从新 bin-log 日志指定的文件和位置开始请求新的 bin-log 日志内容
- slave 服务器的 sql线程 会实时的检测本地的 relay log 中 I/O线程 新增加的日志内容,
- 然后及时的把 relay log 文件中的内容解析成 sql 语句,
- 并在 relay-log.info 中记录当前应用中继日志的文件名和位置点
- 经历了上面的过程, 就可以保证 master 端 和 slave 端执行了相同的 sql 语句,当复制状态正常时, master 和 slave 端的数据是完全一样的
针对mysql 主从复制原理的重点进行小结:
- 主从复制是异步的逻辑的 sql语句级别的复制
- 复制时,主库有一个 I/O 线程, 从库有2个线程,即 i/o 和 sql 线程
- 实现主从复制的必要条件是: 主库开启 binlog 功能
- 作为复制的所有 mysql 节点的 server-id 都不能相同
- bin-log 只记录对数据可以有更改的 sql 语句(来自数据库内容的变更), 不记录任何查询(select 、show) 语句
参考: 跟老男孩学linux-web集群-第九章
Msql 主从原理介绍-通俗易懂相关推荐
- 赠书:深入理解MySQL主从原理
根据经验,想要快速学习一门技术有3种方式. 第一种方式是通过代码来理解它的实现,反推它的逻辑. 这种方式的难度很大,而且起点相对高,能够沉浸其中的人非常少,过程相对来说是苦闷的,但如果能够沉下心来看代 ...
- MySQL主从原理,基于快速学习一门技术的3种方式!
根据经验,想要快速学习一门技术有3种方式. 第一种方式是通过代码来理解它的实现,反推它的逻辑. 这种方式的难度很大,而且起点相对高,能够沉浸其中的人非常少,过程相对来说是苦闷的,但如果能够沉下心来看代 ...
- heartbeat原理介绍
heartbeat原理介绍 HeartBeat运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的"心跳"则自动接管主服务器的资 ...
- kafka集群原理介绍
kafka集群原理介绍 @(KAFKA)[kafka, 大数据] kafka集群原理介绍 一基础理论 二配置文件 一java调优 二参数说明 三错误处理 四zookeeper中的内容 1brokers ...
- LVS原理介绍及安装过程
一.ARP技术概念介绍 为什么讲ARP技术,因为平常工作中有接触.还有就是LVS的dr模式是用到arp的技术和数据. 1.什么是ARP协议 ARP协议全程地址解析协议(AddressResolutio ...
- 学习C++项目——数据库知识学习(主从原理,分离配置,远程工具只是了解,都没有实现)
学习数据库知识 一.思路和学习方法 本文学习于:B站平台UP主 IT 小当家,学习 MySQL 数据库,如里面加以自己的一些学习复现和理解,如有侵权会进行删除.学习Oracle以后也可以参考之前学 ...
- 网络时间同步(卫星时钟同步系统)技术原理介绍
网络时间同步(卫星时钟同步系统)技术原理介绍 网络时间同步(卫星时钟同步系统)技术原理介绍 1.前言 由计算机网络系统组成的分布式系统,若想协调一致进行:IT行业的"整点开拍".& ...
- Matlab 离散小波变换函数 dwt2() 原理介绍与实验
文章目录 一.小波变换的原理 1.1 小波变换简介 1.2 CWT和DWT的原理 二.傅里叶变换与DWT的比较 三.Matlab实现图像的二维小波变换 3.1 dwt2()函数介绍 3.2 dwt2( ...
- HDR sensor 原理介绍
HDR sensor 原理介绍 一. HDR sensor 原理介绍 什么是sensor的动态范围(dynamic range): sensor的动态范围就是sensor在一幅图像里能够同时体现高光和 ...
- java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍
本文主要向大家介绍了JAVA语言之Java NIO的工作机制和实现原理介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 前言 本文只简单介绍NIO的原理实现和基本工作流程 I/O和 ...
最新文章
- 详解XMind各种上传分享分类
- 利用归并排序求逆序对
- php mysql 获取错误_php怎样获取mysql错误信息
- jpa中::::_项目学生:JPA标准查询
- 《C++ Primer 5th》笔记(8 / 19):IO库
- WEB运用程序如何实现高效可维护?
- as3中splice和slice的用法
- run、kill、return、stoprobot、stop
- slots游戏html5开发,unity自定义游戏框架Custom Slots fr amework 1.4
- android 点击文本框 不调用键盘,Android点击EditText文本框之外任何地方隐藏键盘的解决办法...
- android 刷机文件怎么打开,安卓手机怎么刷机
- 3dmax塌陷在哪里?怎么用?
- 腾讯产品经理培训生笔试攻略,笔试题型详细解析(送历年笔试题库)!
- 创新的原则(《创新与企业家精神》彼得·德鲁克)
- sdkman 的酷炫 Logo 欢迎界面: 安装 kscript (Kotlin Shell)
- 面向对象:余愿,知你冷暖,懂你悲欢,与你共黄昏,也能问你粥可温
- 电脑连接蓝牙耳机声音总是断断续续:
- 大数据24小时:腾讯杀入无人驾驶市场,百度安全联合成立“OASES智能终端安全生态联盟”
- 中国录音制品出版情况分析:2020年中国共出版录音制品5312种,出版数量共计12194.67万盒(张)[图]
- 解密国产大数据法律应用服务平台