一. 前言
面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时间有大量并发读操作和较少写操作类型的应用系统来说,将单一的数据库拆分为主库和从库,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。
通过一主多从的配置方式,可以将查询请求均匀的分散到多个数据副本,能够进一步的提升系统的处理能力。 使用多主多从的方式,不但能够提升系统的吞吐量,还能够提升系统的可用性,可以达到在任何一个数据库宕机,甚至磁盘物理损坏的情况下仍然不影响系统的正常运行。
虽然读写分离可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题,这包括多个主库之间的数据一致性,以及主库与从库之间的数据一致性的问题。
并且,读写分离也带来了与数据分片同样的问题,它同样会使得应用开发和运维人员对数据库的操作和运维变得更加复杂。透明化读写分离所带来的影响,让使用方尽量像使用一个数据库一样使用主从数据库,是读写分离中间件的主要功能。
在上一篇文章介绍到Mysql数据库的分库分表,本文将介绍读写分离
二. 本文计划
-
安装Mysql
-
配置主从复制
-
测试主从复制
-
读写分离
-
测试读写分离
三. 项目实战
环境介绍
-
CentOS 7 192.168.0.3 从数据库
-
CentOS 7 192.168.0.4 主数据库
3.1 安装Mysql数据库
这里不做过多介绍了 我这里安装的Mysql 8.0
3.2 配置主从复制
MySQL 主从复制的方式有多种,本文主要演示基于基于日志(binlog)的主从复制方式。
MySQL 主从复制(也称 A/B 复制) 的原理
-
Master将数据改变记录到二进制日志(binary log)中,也就是配置文件log-bin指定的文件, 这些记录叫做二进制日志事件(binary log events);
-
Slave 通过 I/O 线程读取 Master 中的 binary log events 并写入到它的中继日志(relay log);
-
Slave 重做中继日志中的事件, 把中继日志中的事件信息一条一条的在本地执行一次,完 成数据在本地的存储, 从而实现将改变反映到它自己的数据(数据重放)。
主从配置需要注意的点
-
主从服务器操作系统版本和位数一致;
-
Master 和 Slave 数据库的版本要一致;
-
Master 和 Slave 数据库中的数据要一致;
-
Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;
主从配置的简要步骤
Master 上的配置
-
1.安装数据库;
-
</2.修改数据库配置文件, 指明 server_id, 3.开启二进制日志(log-bin);