MySQL读写分离方案之 MySQL 一主多从

本文详细介绍了如何在Docker环境下配置MySQL的主从复制,实现读写分离。通过创建目录,配置docker-compose环境,设置主从节点的mysqld.cnf文件,以及处理搭建过程中可能遇到的问题,如 Slave_IO_Running 和 Slave_SQL_Running 的状态检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL 一主多从实现读写分离

本节主要基于Docker 实现mysql主从复制达到读写分离的效果

主从架构原理

第一步就是master记录二进制日志(这些记录叫做二进制日志事件,binary log events)。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

第二步就是slave将master的binary log拷贝到它自己的中继日志(relay log)。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

第三步SQL slave thread处理该过程的最后一步,slave重复中继日志中的事件,将改变执行到自己的数据库。SQL线程从中继日志读取事件,更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

此外,在master中也有一个工作线程:和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。

环境配置

在主节点和从节点都做如下配置

1. 创建目录

mkdir -p /usr/local/docker/mysql
cd /usr/local/docker/mysql

mkdir conf data

2. 配置docker-compose 环境

  • 下载docker-compose 二进制文件,并配置docker-compose
curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

3. yaml 文件

在 /usr/local/docker/mysql 目录下,创建docker-compose.yml文件<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值