【redis】7-主从复制原理与优化/搭建MySQL主从同步(基于docker)
一 什么是主从复制
机器故障;容量瓶颈;QPS瓶颈
一主一从,一主多从
做读写分离
做数据副本
扩展数据性能
一个maskter可以有多个slave
一个slave只能有一个master
数据流向是单向的,从master到slave
1.1 原理
|
|
1.2 主库是否要开启持久化
|
|
1.3 辅助配置(主从数据一致性配置)
|
|
二 复制的 配置
2.1 slave 命令
|
|
2.2 配置文件
|
|
四 故障处理
slave故障
master故障
五 复制常见问题
1 读写分离
读流量分摊到从节点
可能遇到问题:复制数据延迟,读到过期数据,从节点故障
2 主从配置不一致
maxmemory不一致:丢失数据
数据结构优化参数:主节点做了优化,从节点没有设置优化,会出现一些问题
3 规避全量复制
第一次全量复制,不可避免:小主节点,低峰(夜间)
节点运行id不匹配:主节点重启(运行id变化)
复制挤压缓冲区不足:增大复制缓冲区大小,rel_backlog_size
4 规避复制风暴
单主节点复制风暴,主节点重启,所有从节点复制
10分钟搭建MySQL主从同步(基于docker)
一 主从配置原理
mysql主从配置的流程大体如图:
1)master会将变动记录到二进制日志里面;
2)master有一个I/O线程将二进制日志发送到slave;
3) slave有一个I/O线程把master发送的二进制写入到relay日志里面;
4)slave有一个SQL线程,按照relay日志处理slave的数据;
二 操作步骤
2.1我们准备两台装好mysql的服务器(我在此用docker模拟了两台机器)
环境 | mysql版本 | ip地址:端口号 |
---|---|---|
主库(master) | 5.7 | 172.16.209.100:33307 |
从库(slave) | 5.7 | 172.16.209.100:33306 |
用docker拉起两个mysql容器,步骤如下(对docker不熟悉的同学可以查看docker快速入门章节):
|
|
2.2 远程连接入主库和从库
|
|
|
|
##2.3 测试主从同步
|
|
|
|
可以看到大功告成
🐱不负韶华,只争朝夕🍚