主从复制架构原理浅析

主从复制浅析

需要注意:主节点必须开启二进制日志,从节点建议开启(从节点有可能会升为主节点)。

主从复制原理

主从复制架构原理浅析_第1张图片

数据更新(主节点)-》写入Bin log(主节点二进制日志)-》Slave服务线程(主节点dump线程)-》io Thread (从节点)-》写入Relay Log (从节点的中继日志,本质上也是二进制文件)-》SQL Thread (从节点)-》数据更新(从节点)。

主节点:
dump Thread :为每个Slave的I/O Thread 开启一个dump进程,用于向其发送binary log events

从节点:

I/O Thread :向Master请求二进制日志事件,并保存与中继日志中。

SQL Thread :从中继日志中读取日志时间,在本地完整重放。

跟复制功能相关的文件

master.info 用于保存slave连接至master时的相关信息。例如账号、密码、服务器地址等。

relay-log.info 保存在当前slave节点上已经复制的当前二进制日志和本地relay log 日志的对应关系

mysql-relay-bin.00000# 中继日志,保存在从主节点复制过来的二进制日志。本质就是二进制日志。

在主从复制同步开始之前需要对主节点数据库数据进行完全备份,保证从节点数据在开始时和主节点数据一致。

开始完全备份时开启master-data=1;

master-data记录的位置之后的数据通过二进制日志文件进行同步。

主从复制的特点

异步复制:客户端性能良好。

主从数据不一致比较常见。

(同步复制有时间延迟吗,一般不使用)。

主从复制的多种复制架构

  • 一Master /一Slave 用的比较多

  • 一主多从 用的比较多

  • 从服务器再有从服务器(Master-》Slave(1个)-》Slave(两个)),好处是降低主服务器压力,坏处是增加复制时间延迟。(偶尔会使用)。

  • Master/Master(双主架构不会直接使用,会产生冲突,可以通过设置代理来配置默认的写节点。)生产中用的比较少。

  • 一从多主适用于多个不同的数据库,容易产生数据冲突。(生产中用的较少)

  • 环状复制(生产中用的较少)。

注意点:一般主从节点数据库版本要一致,如果不能一致,从节点的版本要高于主节点版本。

高版本可以向下兼容,版本不同可能会出现二级制文件格式不同的情况。但是高版本可以向下兼容。

如果节点数据库需要升级,最好是将数据完全备份出来,然后重装高版本数据库,进行备份还原。

如果主从节点的数据库都需要升级,先升级从节点数据库。

你可能感兴趣的:(运维,mysql,服务器,架构,数据库,java,主从复制)