需要注意:主节点必须开启二进制日志,从节点建议开启(从节点有可能会升为主节点)。
数据更新(主节点)-》写入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(双主架构不会直接使用,会产生冲突,可以通过设置代理来配置默认的写节点。)生产中用的比较少。
一从多主适用于多个不同的数据库,容易产生数据冲突。(生产中用的较少)
环状复制(生产中用的较少)。
注意点:一般主从节点数据库版本要一致,如果不能一致,从节点的版本要高于主节点版本。
高版本可以向下兼容,版本不同可能会出现二级制文件格式不同的情况。但是高版本可以向下兼容。
如果节点数据库需要升级,最好是将数据完全备份出来,然后重装高版本数据库,进行备份还原。
如果主从节点的数据库都需要升级,先升级从节点数据库。
上一篇:历史上的棒球明星