写点什么

MySQL 主从架构原理

用户头像
无心
关注
发布于: 2021 年 03 月 28 日
MySQL主从架构原理

主从概念

指的是 Mysql 主库数据发生变更时,会同步更新到从库

主从好处

保证高可用、水平扩展、读写分离、数据备份

主从原理

  • binlog

记录数据库的写入操作,以二进制的形式保存在日志文件;

3 种形式:

statement: 记录每一条 sql 语句;

row: 记录每一条数据的变更;

mixed: statement 和 row 的混合,mysql 决定什么场景用 statement,什么场景用 row;

  • relay log

Slave 接收 Master 的同步日志,会先放到中继日志 relay log 里;

slave 的读操作也会基于 relay log;

主要是将 IO 线程和 SQL 解析线程解耦;

  • 同步过程

Slave 连接到 Master;

Master 开启 binlog dump 线程;

Dump 线程将 binlog 内容推给 Slave 的 IO 线程;

Slave 将内容写入到 relay log;

Slave SQL 线程读取 relay log,解析并重放执行,实现数据库同步;

主从延时问题

  • 产生原因

  • 网络延迟

  • Master 并发 TPS 很高, 产生的 DDL 语句超过了 Slave SQL 单线程处理能力;

Master 写是多线程, Slave SQL 执行是单线程;

且 binlog 写是顺序的, 性能高, 而 Slave SQL DML、DDL 执行是随机写的, 较慢;

  • Slave 查询操作有锁, 且执行时间较长;

  • 解决方法

  • 提升硬件性能;

  • 合理安排从库的数量,一般建议 3-5 台;

主从切换

Master 设置为只读 read only = true;

确保 Slave 已经完成了同步, show slave status 的 seconds_bebind_master = 0;

把 Slave 设置为可读写 read only = false;

将 Slave 设置为 Master, 执行 stop slave & reset master;

主从搭建

待补充


用户头像

无心

关注

8年+ java 开发经验 2019.02.13 加入

原来过得很快乐

评论

发布
暂无评论
MySQL主从架构原理