10 - Master-slave replication, Read-write separation
10 - 主从复制、读写分离
主库和从库
1. 概述
主数据库的 DDL 和 DML 通过二进制日志传到 从库服务器中,然后再库上重新执行...
主库可以同时向多台从库复制
从库可以作为其他的主库实现链状复制
1.1. MySQL的复制优点
主库出现问题,切换到从库提供服务
实现读写分离,降低主库访问压力
可以在从库执行备份,避免备份影响主库业务...,但会存在延迟
2. 原理
主库执行所有语句的数据变更会写入 BINLOG,
从库会读取主库的 BINLOG...然后写入 Relay Log 然后再执行对于 SQL...
2.1. 三步
Master 事务提交后记入 Binlog
从库读取 Binlog 写入 Relay Log
slave 重做中继日志中的事件
3. 搭建
两台服务器...
关闭防火墙、开放 3306 端口...
3.1. 主库配置
mysql 服务 id 保证集群环境中唯一
赋予用户:主从复制的权限...
可以查看二进制文件的坐标
file 日志文件
position 文件位置
binlog_ignore_db 指定不需要的数据
3.2. 从库配置
server id 不和主库重复
read-only = 1 表示只读...0表示读写
还要设置 super-read-only 限制超管权限...
主从库状态...
STATUS 开启同步操作...
3.3. 测试 & 总结
主库的数据变更同步到从库,从而保证主库和从库数据一致...
数据备份、是百千亿、读写分离、降低主库压力
4. 读写分离
根据执行的业务来操作主库、从库...是复杂的
读写分离可以把数据库的读和写操作分开,对应不同的数据库服务器,主数据库提供写操作,从数据库提供读操作...
4.1. 一主一从
原理
MySQL的主从复制,基于 二进制日志 binlog 实现的
配置
balance 负载均衡策略 --- 根据取值分类
0.- 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上
1.- 全部的 readHost 与备用的 writeHost 都参与 select 语句的负载均衡(主要针对双主从模式)
2.- 所有的读写操作都随机在 writeHost,readHost 上分发 - 不会读写分离...
3.- 所有的读请求随机发到 writeHost 对应的 readHost 上执行,writeHost 不负担读压力
4.2. 双主双从
双主双从架构是一种高可用性和负载均衡的数据库解决方案,由两台主数据库服务器(Master)和两台从数据库服务器(Slave)组成。每台主服务器同时充当另一台主服务器的从服务器,形成一个互为主从的关系。
介绍
实现高可用
一个主机 MasterA 用于处理所有写请求并将数据同步到从服务器 B 和从服务器 C
一个主机 MasterB 处理写操作,并将数据同步到从服务器 A 和从服务器 D
Slave C D 负责读取数据,分担主服务器的读压力
架构优势
高可用性
任何一台主服务器故障,另一台主服务器可以立即接管其工作,确保系统持续运行
通过互为主从的配置,避免了单点故障
负载均衡
读操作可以分散到多台从服务器上,减轻主服务器的负担,提高整体性能
写操作可以在两台主服务器之间进行负载均衡
数据冗余
数据在多台服务器上备份,降低了数据丢失的风险
灵活扩展
可以根据需求增加从服务器,进一步提升系统的处理能力
Last updated