这一篇主要介绍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 '