首页 > 试题广场 >

mysql主从复制?

[问答题]
主从复制是指 从数据从一个数据库服务器的主节点上复制到其他一个或多个从节点的数据库服务器。MySql数据库默认采用异步复制方式。从节点数据库不用一直访问主服务器也可以实现更新数据。
主从复制 主要用于读写分离。
分为:一主一从,一主多从,多主一从,双主复制,级联复制。
原理:主从复制涉及三个线程:log dump thread ,i/o thread ,SQL thread .

当从节点连接到主节点时主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点之前,锁会被释放。

l 从节点I/O线程

当从节点上执行`start slave`命令之后,从节点会创建一个I/O线程用来连接主节点,请求主库中更新的bin-log。I/O线程接收到主节点binlog dump 进程发来的更新之后,保存在本地relay-log中。

l 从节点SQL线程

SQL线程负责读取relay log中的内容,解析成具体的操作并执行,最终保证主从数据的一致性。

发表于 2019-03-11 23:02:48 回复(0)
<p>原理</p><p> 从库启动i/o进程获取主库binlog文件,sql线程讲binlog文件转换为中间日志文件,再由从库的sql线程执行中间日志文件的dml、ddl命令</p><p>目的</p><p> 从库作为主库的备份,增强可用性,另外为读写分离提供支持</p>
发表于 2020-05-21 08:13:04 回复(0)
首先Slave 上面的IO线程发起请求,连接上 Master,并从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容。然后Master 接收到来自 Slave 的 IO 线程的请求后,通过负责复制的 IO 线程根据请求信息读取指定日志指定位置之后的日志信息,返回给 Slave 端的 IO 线程。Slave 的 IO 线程接收到信息后,将接收到的日志内容依次写入到 Slave 端的Relay Log文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master- info文件中。

当IO线程处理完毕之后,Slave 的 SQL 线程检测到 Relay Log 中新增加了内容后,会马上解析该 Log 文件中的内容成为在 Master 端真实执行时候的那些可执行的SQL语句,并在自身执行这些 SQL。这样,实际上就是在 Master 端和 Slave 端执行了同样的SQL,所以两端的数据就达成了数据的一致性。
发表于 2019-01-19 13:22:36 回复(0)
请你介绍一下 mysql的主从复制?
发表于 2020-04-28 15:16:24 回复(0)