mysql主从复制原理及存在的问题


主从复制的原理
当从库执行CHANGE MASTER TO 后

  • 从库

    • 生成两个线程I/O thread和SQL thread。
    • I/O线程与主库进行连接,请求主库的binlog。接收到binlog后,会存储到relay log中(中继日志)
    • SQL线程会解析中继日志,并在从库上进行应用
  • 主库
    • 接到I/O线程的请求,会生成一个binlog dump thread。负责把binlog给从库的I/O线程。

查看主库的线程

mysql> show processlist\G
*************************** 1. row ***************************
     Id: 5
   User: repl
   Host: miles22:44755
     db: NULL
Command: Binlog Dump
   Time: 1777
  State: Master has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
...

查看从库的线程

mysql> show processlist\G
...
#I/O线程
*************************** 2. row ***************************
     Id: 9
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1911
  State: Waiting for master to send event
   Info: NULL
#SQL线程
*************************** 3. row ***************************
     Id: 10
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 1252
  State: Slave has read all relay log; waiting for the slave I/O thread to update it
   Info: NULL

查看从库的中继日志

#miles-relay-bin为中继日志
[root@miles22 mysql]# ll
total 112512
-rw-rw----. 1 mysql mysql       56 Dec  3 13:54 auto.cnf
drwx------. 2 mysql mysql     4096 Dec  5 17:39 db1
-rw-rw----. 1 mysql mysql    20933 Dec  5 17:54 error.log
-rw-rw----. 1 mysql mysql 12582912 Dec  5 18:00 ibdata1
-rw-rw----. 1 mysql mysql 50331648 Dec  5 18:00 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 Dec  3 13:49 ib_logfile1
-rw-rw----. 1 mysql mysql      129 Dec  5 18:05 master.info
-rw-rw----. 1 mysql mysql        6 Dec  3 14:00 miles.pid
-rw-rw----. 1 mysql mysql      173 Dec  5 17:54 miles-relay-bin.000001
-rw-rw----. 1 mysql mysql      870 Dec  5 18:05 miles-relay-bin.000002
-rw-rw----. 1 mysql mysql       50 Dec  5 17:54 miles-relay-bin.index
drwx------. 2 mysql mysql     4096 Dec  5 17:39 mysql
-rw-rw----. 1 mysql mysql    65420 Dec  3 13:49 mysql-bin.000001
-rw-rw----. 1 mysql mysql  1176237 Dec  3 13:49 mysql-bin.000002
-rw-rw----. 1 mysql mysql      143 Dec  3 13:54 mysql-bin.000003
-rw-rw----. 1 mysql mysql      120 Dec  3 14:00 mysql-bin.000004
-rw-rw----. 1 mysql mysql     2063 Dec  3 20:29 mysql-bin.000005
-rw-rw----. 1 mysql mysql   626058 Dec  5 17:39 mysql-bin.000006
-rw-rw----. 1 mysql mysql      174 Dec  3 20:29 mysql-bin.index
drwx------. 2 mysql mysql     4096 Dec  3 13:49 performance_schema
-rw-rw----. 1 mysql mysql       59 Dec  5 18:05 relay-log.info

[root@miles22 mysql]# more master.info
23
mysql-bin.000013
1115
192.168.137.21
repl
beijing
3333
60
0

0
1800.000

0
831d7c7e-982b-11e5-adcc-00505638f3db
86400

0

[root@miles22 mysql]# more relay-log.info
7
./miles-relay-bin.000002 #中继日志位置点
870
mysql-bin.000013
1115 #从库复制到这
0
0
1

主从复制存在的问题

  • 主库宕机后,数据可能丢失
mysql主从复制是异步的,不需要等待从库复制成功后再返回。
  • 从库只有一个SQL线程,主库写压力大,复制很可能延时
从库应用日志的线程只有SQL线程一个,而主库同时接受很多线程进行读写。当主库压力大时,从库很可能落后主库
  • 解决方法:
    • 半同步复制(可有效解决数据丢失的问题)
    • 并行复制 (可以让从库同时启动更多的线程去应用binlog)
时间: 2024-11-13 08:56:12

mysql主从复制原理及存在的问题的相关文章

mysql dba系统学习(18)mysql主从复制的实现

mysql主从复制的实现 1.MySQL复制的实现原理 MySQL支持单向.双向复制.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入一个二进制日志文件中,并创建一个索引文件以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,日志文件会通知主服务器,从服务器在日志中读取的最后一次成功更新的位置.接着,从服务器在上次成功更新的位置处开始进入更新操作.更新完成后从服务器开始进入等待状态,等待主服务器后续的更新.需要注意

深入解析半同步与异步的MySQL主从复制配置_Mysql

简单来讲MySQL的主从复制就是一个C/S架构的应用.master可以认为是我们通常意义上所认为的server,slave可以当作是一台client.slave上的I/O线程去请求master上数据,而master验证通过slave的信息后就允许slave接入,然后进行数据变化信息的发送.一.MySQL主从复制原理这里我以MySQL5.5为例来说一下MySQL的主从复制的原理: 首先由备节点的I/O线程负责向主节点请求数据,主节点验证通过以后会由dump线程把数据发送给备用节点.备用节点的I/O

mysql(master/slave)主从复制原理及配置图文详解_Mysql

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

高可用架构-- MySQL主从复制的配置

环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 主节点IP:192.168.1.205     主机名:edu-mysql-01 从节点IP:192.168.1.206     主机名:edu-mysql-02 主机配置:4核CPU.4G内存   依赖课程 <高可用架构篇--第13节--MySQL源码编译安装(CentOS-6.6+MySQL-5.6)>   MySQL主从复制官方文档 http://dev.

MySQL 主从复制详解(详细)

目录: MySQL 主从原理 MySQL 主从配置 MySQL 主从一致性检查 MySQL 主从错误处理 参考链接 一.mysql主从原理 1. 基本介绍 MySQL 内建的复制功能是构建大型,高性能应用程序的基础.将 MySQL 的 数亿分布到到多个系统上去,这种分步的机制,是通过将 MySQL 的某一台主机的数据复制到其它主机( Slave )上,并重新执行一遍来实现的.复制过程中一个服务器充当服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志,并维护文件的一个索引以跟

关于mysql主从复制的概述与分类(转)

一.概述: 按照MySQL的同步复制特点,大体上可以分为三种类别: 1.异步复制: 2.半同步复制: 3.完全同步的复制: -------------------------------------------------------------------------------------------------- (一).异步复制: 1.概念 mysql的异步复制在业界中的叫法有很多,比如:AB复制.主从同步.mysql replication等等.说白了就是master和slave结构.

MySQL主从复制与读写分离

MySQL主从复制与读写分离 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步数据,再通过读写分离(MySQL-Proxy)来提升数据库的并发负载能力 这样的方案来进行部

相当简单的MySQL主从复制配置教程

主从复制好处 它可以保证我们数据实时异步备份并且主服务器不受外部影响安全可靠 主从复制原理 将数据分布到多个系统上去,是通过将Mysql的某一台master主机的数据复制到其它(slave)主机上,并重新执行一遍来实现的: 复制过程中一个服务器充当master服务器,而一台或多台其它服务器充当slave服务器.master服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环. 这些日志可以记录发送到slave服务器的更新.当一个slaves服务器连接master服务器时,它通知ma

MySQL 主从复制资料汇总

1,复制原理 官方参考文档:http://dev.mysql.com/doc/refman/5.6/en/replication.html 博客地址1:http://blog.csdn.net/mchdba/article/details/11354771 博客地址2:http://blog.csdn.net/mchdba/article/details/8717513  如下图1.png所示:   该过程的第一部分就是master记录二进制日志.在每个事务更新数据完成之前,master在二日志