当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL 4种常用的主从复制架构

MySQL 4种常用的主从复制架构

2020年08月20日  | 移动技术网IT编程  | 我要评论
一主多从复制架构在主库读取请求压力非常大的场景下,可以通过配置一主多从复制架构实现读写分离,把大量的对实时性要求不是特别高的读请求通过负载均衡分部到多个从库上(对于实时性要求很高的读请求可以让从主库去

一主多从复制架构

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

在主库出现异常宕机的情况下,可以把一个从库切换为主库继续提供服务。

在主从复制场景下会出现主从延迟,想想该怎么解决?

多级复制架构

一主多从的架构能够解决大部分读请求压力特别大的的场景的需求,考虑到mysql的复制需要主库发送binlog日志到从库的i/o线程,主库的i/o压力和网络压力会随着从库的增加而增长(每个从库都会在主库上有一个独立的binlog dump线程来发送事件),而多级复制架构解决了一主多从场景下的,主库额外的i/o和网络压力。mysql的多级复制架构如下图所示。

对比一主多从的架构,多级复制仅仅是在主库master1复制到从库slave1、slave2、slave3的中间增加了一个二级主库master2,这样,主库master1只需要给一个从库master2发送binlog日志即可,减轻了主库master1的压力。二级主库master2再发送binlog日志给所有的从库slave1、slave2和slave3的i/o线程。

多级复制解决了一主多从场景下,主库的i/o负载和网络压力,当然也有缺点:mysql的传统复制是异步的,多级复制场景下主库的数据是经历两次复制才到达从库slave1、slave2、slave3的,期间的延迟要比一主多从复制场景下只经历一次复制的还大。

可以通过在二级主库master2上选择表引擎为blackhole来降低多级复制的延迟。顾名思义,blackhole引擎是一个“黑洞”引擎,写入blackhole表的数据并不会写会到磁盘上,blackhole表永远都是空表,insert、update、delete操作仅仅在binlog中记录事件。

create table `user` (
	`id` int not null auto_increment primary key,
	`name` varchar(255) not null default '',
	`age` tinyint unsigned not null default 0
)engine=blackhole charset=utf8mb4;
insert into `user` (`name`,`age`) values("itbsl", "26");
select * from `user`;

可以看到,存储引擎为blackhole的user表里没有数据。

blackhole引擎非常适合二级主库masger2的场景:master2并不承担读写请求,仅仅负责将binlog日志尽快传送给从库。

双主(dual master)复制架构

双主(dual master)复制架构适用于dba做维护时需要主从切换的场景,通过双主复制架构避免了重复搭建从库的麻烦,双主复制架构如下图所示。

主库master1和master互为主从,所有web client的写请求都访问主库master1或master2。加入,dba需要做日常维护操作,为了避免影响服务,需进行一下操作。

  • 首先,在master1库上停止slave线程(stop slave),避免后续对master2库的维护操作操作被实时复制到master1库上对服务造成影响。
  • 其次,在master2库上停止slave线程(stop slave),开始日常维护操作,例如修改varchar字段从长度10增加到200。
  • 然后,在master2库上完成维护操作之后,打开master2库上的slave线程(strart slave),让master2的数据和master1库同步,同步完成后,把应用的写操作切换到master2库上。
  • 最后,确认master1库上没有应用访问后,打开master1的slave线程(start slave)即可。

通过双主复制架构能够大大减轻一主多从架构下对主库进行维护带来的额外搭建从库的工作。

当然双主架构还能和主从复制联合起来使用:在master2库下配置从库slave1、slave2等,这样既可通过从库slave1等来分担读取压力,同时在dba做维护的同时,避免了重建从库的额外工作,但需要注意从库的复制延迟。mysql双主多级复制架构如下所示。

多源(multi-source)复制架构

多源(multi-source)复制架构适用于复杂的业务需求,既可以支撑oltp(联机事务处理),也可以满足olap(联机分析处理)。mysql的多源复制架构我就暂时不画啦,等有空再画好补充上(画图也是个体力活呀)。有兴趣的可以看《深入浅出mysql数据库开发、优化与管理维护》这本书。

如何优化主从延迟问题?

  • 优化网络环境
  • 在mysql5.5~mysql5.6中,使用半同步复制
  • 在mysql5.7中,可以使用增强半同步复制(也称为无损复制)

关于mysql主从延迟的具体信息,可以看我的另一篇文章聊聊mysql主从复制的几种复制方式

整理自:

深入浅出mysql数据库开发、优化与管理维护》这本书。

以上就是mysql 4种常用的主从复制架构的详细内容,更多关于mysql 主从复制架构的资料请关注移动技术网其它相关文章!

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

  • Ubuntu上Vim安装NERDTree插件的详细操作步骤

    Ubuntu上Vim安装NERDTree插件的详细操作步骤

    nerdtree是vim的文件系统浏览器,使用此插件,用户可以直观地浏览复杂的目录层次结构,快速打开文件以进行读取或编辑,以及执行基本的文件系统操作。nerdt... [阅读全文]
  • MySQL 4种常用的主从复制架构

    MySQL 4种常用的主从复制架构

    一主多从复制架构在主库读取请求压力非常大的场景下,可以通过配置一主多从复制架构实现读写分离,把大量的对实时性要求不是特别高的读请求通过负载均衡分部到多个从库上(... [阅读全文]
  • 浅析MySQL 备份与恢复

    1、简介数据无价,mysql作为一个数据库系统,其备份自然也是非常重要且有必要去做。备份的理由千千万,预防故障,安全需求,回滚,审计,删了又改的需求等等,备份的... [阅读全文]
  • 保障MySQL数据安全的一些建议

    数据是企业核心资产,数据对企业而言是最重要的工作之一。稍有不慎,极有可能发生数据无意泄露,甚至被黑客恶意窃取的风险。每年业界都会传出几起大事件,某知名或不知名的... [阅读全文]
  • MySQL如何快速修改表的表结构

    快速修改mysql某张表的表结构--摘录自《mysql管理之道》alter table 表名 modify 列名 数据类型; 这个命令可以修改表结构此外,也可以... [阅读全文]
  • MySQL 行锁和表锁的含义及区别详解

    一、前言对于行锁和表锁的含义区别,在面试中应该是高频出现的,我们应该对mysql中的锁有一个系统的认识,更详细的需要自行查阅资料,本篇为概括性的总结回答。mys... [阅读全文]
  • MySQL 如何查询当前最新事务ID

    写在前面:在个别时候可能需要查看当前最新的事务 id,以便做一些业务逻辑上的判断(例如利用事务 id 变化以及前后时差,统计每次事务的响应时长等用途)。通常地,... [阅读全文]
  • 如何优雅、安全的关闭MySQL进程

    前言本文分析了 mysqld 进程关闭的过程,以及如何安全、缓和地关闭 mysql 实例,对这个过程不甚清楚的同学可以参考下。关闭过程1、发起 shutdown... [阅读全文]
  • 详解MySQL8.0​ 字典表增强

    详解MySQL8.0​ 字典表增强

    mysql中数据字典是数据库重要的组成部分之一,information_schema首次引入于mysql 5.0,作为一种从正在运行的mysql服务器检索元数据... [阅读全文]
  • 简述MySQL InnoDB存储引擎

    前言:存储引擎是数据库的核心,对于 mysql 来说,存储引擎是以插件的形式运行的。虽然 mysql 支持种类繁多的存储引擎,但最常用的当属 innodb 了,... [阅读全文]
验证码:
移动技术网