MySQL复制的三种架构

本文介绍了MySQL复制的基本原理,包括异步复制、半同步复制,以及常见的复制架构:一主多从、多级复制和双主复制。通过复制,可以实现读写分离,降低主库压力,提高数据安全性,并便于故障切换。

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

复制的基本知识
MySQL复制相对比较简单,就是将主数据库的DDL和DML操作通过二进制日志传到复制服务器(也叫从服务器)上,然后在从库
上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。需要注意的是,虽然所有数据库的二进制日志都混合在同样的文件中,复制时仍然可以通过参数仅将复制特定的数据库到从服务器,或仅复制特定的表到从服务器。具体可参考:
http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-do-db

其他主要商业关系型数据库则提供更为复杂多样的分布式数据解决方案。例如SQL Server提供,
1,数据镜像。和MySQL一样通过在从节点上重做log实现,但只能有一个从节点。可以实现自动failover。
2,log shipping。和MySQL复制的实现和功能完全一致。
3,用快照实现的复制等等。

复制的好处有三方面:
1,如果主库出现问题,可以快速切换到从库提供服务。
2,可以在从库上执行查询操作,降低主库的访问压力。
3,可以在从库上执行备份,以避免备份期间影响主库的服务。

异步复制与半同步复制
在MySQL5.5之前,MySQL的复制是异步操作,即主库的更新操作不关心是否成功复制到了从库,只要主库的数据更新完成,就认为数据更新成功。因此主库和从库的数据之间存在一定的延迟,有数据丢失的隐患。为了解决这个问题,从5.5开始引入了半同步复制,当主库执行完commit提交操作后,并从其中一个从库上接受到Binlog事务并成功写入中继日志后,主库才返回commit操作成功给客户端。半同步复制保证了事务成功提交后,至少有两份日志记录,一份在主库的Binlog日志上,另一份在至少一个从库的中继日志上,从而进一步保证了数据的完整性。

复制架构
MySQL常用的复制架构有三种,分别是一主多从,多级复制和双主复制。下面分别说明:

  • 一主多从

这里写图片描述

在主库读取请求压力非常大的场景下,可以通过配置一主多从复制架构实现读写分离,把大量对实时性要求不是特别高的读请求通过负载均衡分布到多个从库上,降低主库的读取压力。

  • 多级复制

这里写图片描述

一主多从的架构能够解决大部分读请求压力特别大的场景,考虑到MySQL的复制是主库推送Binlog日志到从库,主库的IO压力和网络压力会随着从库的增加而增长(每个从库都会在主库上有一个独立的Binlog Dump线程来发送事件),而多级复制架构解决了一主多从场景下,主库额外的IO和网络压力。
如图所示,master1仅推送binlog到master2上,而由master2推送binlog到所有从库上,从而减轻了master1的压力。同时master2可以考虑使用blackhole存储引擎。

  • 双主复制

这里写图片描述

双主复制特别适用于DBA需要做主从切换的场景。例如主数据库宕机,或人为停止主数据库做维护操作。这是一种类似热备机的架构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值