我的MYSQL学习心得(十七) 复制

mac2022-06-30  25

这一篇主要介绍MYSQL的复制

MYSQL 从3.25.15版本开始提供数据库复制功能(replication)。mysql复制是指从一个mysql主服务器(MASTER)将数据

复制到另一台或多台mysql从服务器(SLAVE)的过程,将主数据库的DDL和DML操作通过二进制日志传到复制服务器上,

然后在从服务器上对这些日志重新执行,从而使从服务器的数据保持同步。

 

在mysql中,复制操作是异步进行的,slave服务器不需要持续的保持连接接收master服务器的数据

 

mysql支持一台主服务器同时向多台从服务器进行复制操作,从服务器同时可以作为其他从服务器的主服务器,如果mysql主服务器

访问量大,可以通过复制数据,然后在从服务器上进行查询操作,从而降低主服务器的访问压力(读写分离),同时从服务器作为

主服务器的备份,可以避免主服务器因为故障数据丢失的问题。

 

mysql数据库复制操作大致可以分为三个步骤

1主服务器将数据的改变记录到二进制日志(binlog)中。

2、从服务器将主服务器的binary log events复制到他的中继日志(relay log)中。

3、从服务器做中继日志中的事件,将数据的改变与从服务器保持同步。

 

首先,主服务器会记录二进制日志,每个事务更新完毕数据之前,主服务器将这些操作的信息记录在二进制日志里面,在事件写入

二进制日志完成后,主服务器 通知存储引擎提交事务。

 

SLAVE上面的I/O进程连接上MASTER,并发出日志请求,MASTER接收到来自SLAVE的I/O进程的请求后,通过负责复制的I/O进程

根据请求信息读取指定日志位置之后的日志信息,返回给SLAVE的I/O进程。返回信息中除了日志所包含的信息之外,还包括本次

返回的信息已经到MASTER端的binlog文件的名称以及binlog的位置

 

SLAVE的I/O进程接收到信息后,将接收到的日志内容依次添加到SLAVE端的relay-log文件的最末端,并将读取到的MASTER端的

binlog文件名和位置记录到master-Info文件中

 

SLAVE的SQL进程检测到relay-log中新增了内容后,会马上解析relay-log的内容成为在master端真实执行时候的那些可执行内容,

并在自身执行

 

mysql复制环境,90%以上都是一个master带一个或者多个slave的架构模式。如果master和slave压力不是太大的话,异步复制的延时一般

都很少。尤其是slave端的复制方式改成两个进程处理之后,更是减少了slave端的延时

 

提示:对于数据实时性要求不是特别严格的应用,只需要通过廉价的电脑服务器来扩展slave的数量,将读压力分散到多台slave的机器上面

即可解决数据库端的读压力瓶颈。这在很大程度上解决了目前很多中小型网站的数据库压力瓶颈问题,甚至有些大型网站也在使用类似方案解决

数据库瓶颈问题


Windows环境下的mysql主从复制

 

复制前的准备工作

在Windows环境下,如果想实现主从复制需要准备的操作环境

角色          ip                      端口            操作系统          mysql版本

master   192.168.1.100     3306           Windows7         5.5.20

slave      192.168.1.102     3306           Windows8         5.5.20

 

Windows环境下实现主从复制

准备好两台安装mysql5.6的计算机,即可实现两台mysql服务器主从复制备份操作。

具体操作步骤如下:

1、在Windows下安装好两台mysql服务器,配置好两台主机的ip地址,实现两台计算机可以网络连通

 

2、配置master的相关配置信息,在master主机上开启binlog日志,首先,看下datadir的具体路径

show variables LIKE '
转载请注明原文地址: https://mac.8miu.com/read-52710.html
最新回复(0)