Mysql主从复制作用和工作原理

一、什么是主从复制

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

二、主从复制的作用

一是确保数据安全;做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据的丢失。
二是提升I/O性能。随着日常生产中业务量越来越大,I/O访问频率越来越高,单机无法满足,此时做多库的存储,有效降低磁盘I/O访问的频率,提高了单个设备的I/O性能。
三是读写分离,使数据库能支持更大的并发;在报表中尤其重要。由于部分报表sql语句非常的慢,导致锁表,影响前台服务。如果前台使用master,报表使用slave,那么报表sql将不会造成前台锁,保证了前台速度。

三、主从复制的原理

主从复制中涉及的文件
主库: binlog
从库:
relaylog 中继日志
master.info 主库信息文件
relaylog.info relaylog应用的信息

主从复制中涉及的三个线程
主库:
Binlog_Dump Thread :
从库:
SLAVE_IO_THREAD
SLAVE_SQL_THREAD

具体原理如图所示:
1.从数据库执行change master to 命令(主数据库的连接信息+复制的起点)
2.从数据库会将以上信息,记录到master.info文件
3.从数据库执行 start slave 命令,立即开启SLAVE_IO_THREAD 和SLAVE_SQL_THREAD这两个线程

  1. 从数据库 SLAVE_SQL_THREAD,读取master.info文件中的信息获取到IP,PORT,User,Pass,binlog的位置信息
  2. 从数据库SLAVE_IO_THREAD请求连接主数据库,主数据库专门提供一个SLAVE_IO_THREAD,负责和SLAVE_SQL_THREAD交互
  3. SLAVE_IO_THREAD根据binlog的位置信息(mysql-bin.00000* , ***),请求主数据库新的binlog
  4. 主数据库通过Binlog_DUMP_Thread将最新的binlog,通过网络TP给从库的SALVE_IO_THREAD
  5. SLAVE_IO_THREAD接收到新的binlog日志,存储到TCP/IP缓存,立即返回ACK给主库,并更新master.info
    9.SLAVE_IO_THREAD将TCP/IP缓存中数据,转储到磁盘relaylog中.
  6. SLAVE_SQL_THREAD读取relay.info中的信息,获取到上次已经应用过的relaylog的位置信息
  7. SLAVE_SQL_THREAD会按照上次的位置点回放最新的relaylog,再次更新relay.info信息
  8. 从数据库会自动purge应用过relay进行定期清理

一旦主从复制构建成功,主数据库当中发生了新的变化,都会通过 slave_dump_THREAD发送信号给SLAVE_IO_THREAD,增强了主从复制的实时性.

原文地址:https://blog.51cto.com/14256904/2421231

时间: 2024-08-07 22:03:08

Mysql主从复制作用和工作原理的相关文章

GRANT命令的作用及其工作原理

管理一个MYSQL数据库,那么准确地理解GRANT命令的作用及其工作原理是非常有意义的. 想了解如何创建用户,以及使用GRANT命令实现用户权限的授予:如果要管理一个MYSQL数据库,那么准确地理解GRANT命令的作用及其工作原理是非常有意义的. 当执行一条GRANT语句的时候,它会影响一个名为mysql的特殊数据库.权限信息就是保存在这个数据库的6个表中.这样,当对数据库授予权限的时候,就应该注意是否授予了访问mysql数据库的访问权限. 以管理员身份登录的,输入如下命令,我们就可以看到mys

Handler的作用以及工作原理

在Android开发中经常会用到Handler,很入了解Handler的作用以及工作原理是很有必要的.废话不多说,下面我们开始进入正题. handler的作用: 同子线程协同工作,接收子线程发送过来的消息,通过发送过来的消息更新主线程(UI线程).我解释一下:当程序需要从服务器请求数据.执行下载任务或者是执行一些其他耗时操作的时候,我们就不能再主线程中进行了.如果你在主线程中执行的话,程序就会进入一个假死状态,如果时间超过5秒,就会报"force close(强制关闭)".这个时候,我

续流二极管作用及工作原理

续流二极管(flyback diode),有时也称为飞轮二极管或是snubber二极管,是一种配合电感性负载使用的二极管,当电感性负载的电流有突然的变化或减少时,电感二端会产生突波电压,可能会破坏其他元件.配合续流二极管时,其电流可以较平缓的变化,避免突波电压的发生. 续流二极管作用及工作原理续流二极管都是并联在线圈的两端,线圈在通过电流时,会在其两端产生感应电动势.当电流消失时,其感应电动势会对电路中的原件产生反向电压.当反向电压高于原件的反向击穿电压时,会把原件如三极管,等造成损坏.续流二极

Cookie和Session的作用和工作原理

本文链接:https://blog.csdn.net/guoweimelon/article/details/50886092 一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料.最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么.为了做到这点,就需要使用到Cookie了.服务器可以设置或读取Cookies中包含信

MySQL 主从复制(实时热备)原理与配置

MySQL是现在普遍使用的数据库,但是如果宕机了必然会造成数据丢失.为了保证MySQL数据库的可靠性,就要会一些提高可靠性的技术.MySQL主从复制可以做到实时热备数据.本文介绍MySQL主从复制原理及其配置过程. 术语:主从复制——master slave replication(M-S模式). 用途 备份 读写分离 高可用和故障切换(需要做HA) MySQL升级测试 原理 实际上,它的原理思路很简单.MySQL 中有一种日志叫做 bin 日志(二进制日志),这个日志会记录下所有修改了数据库的

MySQL主从复制作用和配置

一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

MySQL主从复制半同步复制原理及搭建

在MySQL5.5之前的版本中,MySQL的复制是异步复制,主库和从库的数据之间存在一定的延迟,比如网络故障等各种原因,这样子容易存在隐患就是:当在主库写入一个事务成功后并提交了,但是由于从库延迟没有及时得到主库推送的Binlog日志时,主库突然宕机了,那么此时从库就可能损失这个事务,从而造成主从不一致的状况. 因此我们MySQL5.5版本之后引入了半同步复制的概念 半同步复制的原理: 半同步复制时,为了保证主库上的每一个Binlog事务都能够被可靠的复制到从库上,主库在每次事务成功提交时,并不

MySQL主从复制认识

MySQL主从复制作用1).什么是MySQL主从复制MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个MySQL数据库从节点.MySQL默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库.2).MySQL主从复制作用一.数据热备作为备数据库,当主数据库服务器发生故障后,可切换到从数据库继续工作,避免数据丢失.二.读写分离可支持MySQL数据库服务器支持更大的并发.

Mysql主从复制、读写分离工作原理+配置

Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysqlinstance(我们称之 Slave).在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端. MySQL 复制的基本过程如下: 1. Slave 上面的IO线程连接上 Master,并请求从指定日志文件的指定位置(或者从最开