17. 读写分离

1. 读写分离

1.1 介绍

读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。

通过MyCat即可轻易实现上述功能,不仅可以支持MySQL,也可以支持Oracle和SQL Server。

1.2 一主一从

MySQL的主从复制,是基于二进制日志(binlog)实现的。

1.3 一主一从读写分离

balance配置

  • 负载均衡策略
参数值 含义
0 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上
1 全部的readHost与备用的writeHost都参与select语句的负载均衡(主要针对于双主双从模式)
2 所有的读写操作都随机在writeHost, readHost上分发
3 所有的读请求随机分发到writeHost对应的readHost上执行,writeHost不负担读压力

设置为1或者3可实现读写分离

1.4 双主双从

一个主机Master:1用于处理所有写请求,它的从机Slave1和另一台主机Master2还有它的从机Slave2负责所有读请求。当Master1 主机宕机后,Master2主机负责写请求,Master1、Master2互为备机。架构图如下:

  • 搭建

以下是图中内容转换为Markdown格式的内容:

1
2
3
4
5
6
7
8
9
10
11
12
主库配置 (Master1-192.168.200.211)

1. 修改配置文件 `/etc/my.cnf`

mysql服务ID, 保证整个集群环境中唯一, 取值范围: 1 - 2^32-1, 默认为1
server-id=1
指定同步的数据库
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03
在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates

2. 重启MySQL服务器

1
systemctl restart mysqld

1.5 双主双从读写分离


17. 读写分离
http://binbo-zappy.github.io/2024/12/06/MySQL/17-读写分离/
作者
Binbo
发布于
2024年12月6日
许可协议