主从复制架构和原理
服务性能扩展方式
向上扩展 垂直扩展
向外扩展 横向扩展
MySQL的扩展
读写分离
复制:每个节点相同的数据库,向外扩展,基于二进制日志的单向复制
复制的功能
数据分布
负载均衡读
备份
高可用和故障切换
MySQL升级测试
复制架构
一主一从复制架构
一主多从复制架构
主从复制原理
主从复制相关线程
主节点:
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日志的对应关系
mariadb-relay-bin.00000#:中继日志,保存从主节点复制过来的二进制日志,本质就是二进制日志
主从复制特点
异步复制
主从数据不一致比较常见
各种复制架构
一主一从
一主多从
从服务器还可以再有从服务器
互为主从
一从多主
环形复制
复制需要考虑二进制日志事件记录格式
STATEMENT(5.0之前)
ROW(5.1之后,推荐)
MIXED