加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL主从复制的常见拓扑、原理分析以及如何提高效率

发布时间:2018-12-30 22:14:45 所属栏目:MySql教程 来源:刘弋
导读:副标题#e# 一、主从复制搭建方法参考 MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解 二、Mysql 主从复制的常用拓扑结构 2.1、一主一从 是最基础的复制结构,用来分担之前单台数据库服务器的压力,可以进行读写分离。 2.2、一主多从 一台 Slave 承

在主从系统中主服务器上的一个主要的文件就是bin-log日志,该线程操作的文件也是此日志文件,因此这是我们需要在配置文件my.cnf 中打开bin-log日志的原因,使用此文件来记录我们的更新操作。

  1. [mysqld]  
  2. log-bin = mysql-bin  
  3. server-id = 1  

还有一点需要注意,在上面已经说过,但是在这里觉得有必要再重复一遍,就是有多少个从服务器连接主服务器上就有多少个Binlog dump 线程。

bin-log日志文件管理

对于bin-log日志文件,其默认的名称为 mysql-bin.xxxxxx。而且还有一个索引文件mysql-bin.index,其中记录了当前所有的bin-log日志文件。

对于新的主服务器只有一个bin-log日志文件 mysql-bin.000001。此时所有的操作都有这个文件来记录,如果我们想更换bin-log日志文件,可以使用如下命令

  1. Mysql>flush logs; 

此时会创建一个mysql-bin.000002文件来记录以后的操作。除了使用上述命令以外,当bin-log日志文件达到其最大值的时候也会产生新的bin-log日志文件

其文件最大值和文件名包括索引文件的名称可以使用 –max_binlog_size、–log-bin和—log-bin-index 选项来改变,具体命令如下

mysqld_safe –user=msyql –max_binlog_size=文件长度 –log-bin=新的日志文件名称 –log-bin-index=新索引文件名 &

对于主服务器来说,总起来一句话:主服务器针对于每一个从服务器都创建一个Binlog dump线程,用来读取bin-log日志中更新的操作将其发送给从服务器,发送完毕以后继续等待bin-log日志是否有更新。

五、从服务器流程分析

在主服务器探究这篇文章中我们提到过,在一次主从复制过程中需要用到三个线程:Binlog dump 线程、Slave I/O 线程和Slave SQL线程,其中Binlog dump 线程在主服务器上面,剩下的两个线程是在从服务器上面工作的。

这两个线程在从服务器上面的工作流程如下图所示:

MySQL主从复制的常见拓扑、原理分析以及如何提高效率

对于这两个线程随着从服务器开启slave而产生

  1. mysql> START SLVAE; 

使用

  1. Mysql> SHOW SLAVE STATUSG 

查看这两个线程情况

  1. ……  
  2. Master_Log_File: mysql-bin.000003  
  3. Read_Master_Log_Pos: 1264  
  4. Relay_Log_File: localhost-relay-bin.000002  
  5. Relay_Log_Pos: 878  
  6. Relay_Master_Log_File: mysql-bin.000003  
  7. Slave_IO_Running: Yes  
  8. Slave_SQL_Running: Yes  
  9. ……  

上面结果中的 Slave_IO_Running:Yes和Slave_SQL_Running:Yes表示这两个线程正在运行。

然后我们在从服务器上面使用命令

  1. mysql> SHOW PROCESSLIATG 

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读