前言
随着应用业务数据不断的增大,应用的 响应速度不断下降,在检测过程中我们不难发现大多数的请求都是 查询操作。此时,我们可以将数据库扩展成 主从复制模式,将 读操作 和 写操作 分离开来,多台数据库 分摊请求,从而 减少单库 的 访问压力,进而应用得到优化。
正文
主从复制的方式
MySQL 5.6
开始主从复制有两种方式:基于日志(binlog
)和 基于 GTID
(全局事务标示符)。
本文只涉及基于日志 binlog
的 主从配置。
主从复制的流程
MySQL
同步操作通过 3
个线程实现,其基本步骤如下:
主服务器 将数据的更新记录到 二进制日志(
Binary log
)中,用于记录二进制日志事件,这一步由 主库线程 完成;从库 将 主库 的 二进制日志 复制到本地的 中继日志(
Relay log
),这一步由 从库I/O
线程 完成;从库 读取 中继日志 中的 事件,将其重放到数据中,这一步由 从库
SQL
线程 完成。
主从模式的优点
1. 负载均衡
通常情况下,会使用 主服务器 对数据进行 更新、删除 和 新建 等操作,而将 查询 工作落到 从库 头上。
2. 异地容灾备份
可以将主服务器上的数据同步到 异地从服务器 上,极大地提高了 数据安全性。
3. 高可用
数据库的复制功能实现了 主服务器 与 从服务器间 的数据同步,一旦主服务器出了 故障,从服务器立即担当起主服务器的角色,保障系统持续稳定运作。
4. 高扩展性
主从复制 模式支持 2
种扩展方式:
- scale-up
向上扩展或者 纵向扩展,主要是提供比现在服务器 性能更好 的服务器,比如 增加 CPU
和 内存 以及 磁盘阵列等,因为有多台服务器,所以可扩展性比单台更大。
- scale-out
向外扩展或者 横向扩展,是指增加 服务器数量 的扩展,这样主要能分散各个服务器的压力。
主从模式的缺点
1. 成本增加
搭建主从肯定会增加成本,毕竟一台服务器和两台服务器的成本完全不同,另外由于主从必须要开启 二进制日志,所以也会造成额外的 性能消耗。
2. 数据延迟
从库 从 主库 复制数据肯定是会有一定的 数据延迟 的。所以当刚插入就出现查询的情况