Docker 学习笔记(二)MySQL中继日志、读写分离、主从架构概念 | 使用Docker创建、配置与使用两个MySQL主从库容器

在这里插入图片描述

若发现文章有误,欢迎提出宝贵的建议,敬请指教,感谢

运行环境


  • Ubuntu 21.04
  • Docker 20.10.7
  • MySQL 5.7

一、MySQL相关概念


1.1 中继日志 relay log

  • 中继日志 relay log 只在主从master/slave服务器架构的从服务器上存在。

  • slave为了与master保持一致,要从master读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中,slave本地的日志文件就叫做中继日志(relay log)

  • slave读取relay log,并根据其内容对slave的数据进行更新,完成masterslave的数据同步。

  • 搭建好master/slave之后,relay log 默认会保存在slave的数据目录下。

  • relay log 存储文件名的格式是:slave_name -relay-bin.序号

  • relay log 还有一个索引文件:slave_name-relay-bin.index , 用于定位当前正在使用relay log

relay log 与 二进制日志(bin log)的格式相同,可以用mysqlbinlog 工具进行查看

1.2 主从架构 & 读写分离

1.2.1 如何提高数据库的并发能力

在实际工作中,通常使用 Redis 作为缓存与MySQL配合使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出,如果不存在的话再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力,Redis的缓存架构是高并发架构中非常重要的一环。

在这里插入图片描述

此外,一般对数据库而言都是“读取多,写入少”,即数据库读取数据的压力比较大,解决思路之一就是采用数据库集群的方案,做主从架构,进行读写分离,这样同样可以提升数据库的并发处理能力。

提升数据库高并发访问的步骤,根据需求依次选择其中一种,使用和维护成本是逐渐升高的:

  1. 优化SQL语句索引,这种方式简单有效。
  2. 采用缓存的策略,比如使用Redis将热点数据保存在内存数据库中,提升读取的效率。
  3. 对数据库采用主从架构,进行读写分离。
    在这里插入图片描述

1.2.2 主从架构的三大作用

主从同步设计不仅可以提高数据库的吞吐量,还有以下3个方面的作用。

1.读写分离
可通过主从复制的方式来同步数据,然后通过读写分离提高数据库并发处理能力
在这里插入图片描述
其中一个为Master主库,负责写入数据,简称为:写库
其他都是Slave从库,负责读取数据,简称为:读库

如图,当Master进行更新时,会自从将数据复制到Slave中,而我们在客户端读取数据时,会从Slave中读取。

面对"读多写少"的需求,采用读写分离的方式,可以实现更高的并发访问,同时我们还能对服务器进行负载均衡,让不同的读请求按照策略均匀的分发到不同的Slave上,让读取更加流畅,读取流畅的另一个原因就是减少了锁表的影响,比如:Master负责写,当Master锁表时,不会影响到Slave进行SELECT的读取。

2.数据备份
将Master的数据复制到Slave上,相当于是一种热备份机制,即在Master正常运行的情况下进行备份,不会影响到服务

3.高可用性
数据备份实际上是一种冗余的机制,通过这种冗余的方式可

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值