MYSQL中读写分离有什么样的好处呢,为什么一些人都选择读写分离?

MYSQL中读写分离有什么样的好处呢,为什么一些人都选择读写分离?

现在绝大部分软件项目,都会使用到关系型数据库,比如MySQL、Oracle、DB2等等,目前这些数据库的单机性能已经是不断优化和提高了,但是随着数据增长的速度和并发访问量的增加,在某些公司、某些场景下,单机数据库已经很难满足业务的需要了,所以必须考虑数据库集群的方式来提高系统的可用性;最常见的两种方法:

  • 分库分表:把数据分散到不同的数据库上,每台数据库中存储的数据是不相同的(这里先不考虑每个库做备份或读写分离);分库分表既可以分散数据库访问的压力,也可以分散数据存储的压力;但是使用分库分表方案的时候,会带来扩容、事务、关联查询等问题和难点,具体这里就不展开讲了。

  • 读写分离:将数据库读操作和写操作分散到不同的节点上,通常是一台数据库做写操作,1到N台做读操作;读写分离的架构,每一台数据中的数据是相同的(这里先忽略延迟的问题),所以只分散了数据库访问的压力,并没有分散数据存储的压力;我们这里主要讲一讲读写分离。

读写分离基本架构

MySQL读写分离的基本架构,可以参考下图:

如上图,读写分离实现的基本步骤是:

  1. 数据库服务器搭建多台,一主N从(N大于等于1);

  2. 主数据库只负责写操作,从数据库只负责读操作;

  3. 主数据库复制数据到从数据库上;

  4. 客户端写操作路由到主数据库上,读操作路由到从数据库上。

读写分离还有另外一种架构,就是在MySQL数据库和客户端之间,增加一层中间代理层,客户端只连接代理, 由代理根据请求类型,把请求分发到不同的数据库上:

  • 第一种架构,整体架构比较简单直接,性能会稍微高一些,但是如果才用直连的方式,客户端可能会稍微麻烦一些(通常需要引入一些组件,负责管理数据库);

  • 第二种架构,对客户端比较友好,因为客户端只需要和代理交互,并不用关注数据库的具体信息;但是因为多了一层代理,多多少少会对性能有一定的影响。

读写分离带来的好处

  • 读写分离结构中,会有两台甚至更多台数据库,这种冗余的设计,可以提高数据的安全性和系统的可用性;就算是在分库分表的架构中,每一台子库,也可以一主多备的部署方式;

  • 读写分离更多的时候使用在读操作远远大于写操作的场景下,这样可以保证写操作的数据库承受更小的压力,也可以缓解X锁和S锁争用;

  • 服务器数量的增加,意味着可以有效地利用多台服务器的资源;读操作被分摊,提高了系统的性能;

  • 如果写操作比读操作多,或者相近,可以采用双主相互复制的架构。

读写分离会带来的问题

之前的文章,我也反复强调过,任何的架构、软件、框架、组件...在解决一部分问题的时候,一定会带来其他的问题;读写分离最大的一个问题就是,数据从主复制到从的过程中,可能会存在延迟的,如果客户端在执行完一个读操作后,立刻从存库中查询的话,可能会读取到旧数据的情况(我们不断优化,也只能缩短这个时间,并不能完全消除掉这个时间)。

那么针对这个问题,有哪些处理方法呢?

  • 根据具体场景进行评估,是否可以接收这个延迟(这好像是一句废话,但是大多数业务场景,是可以接收这点儿延迟的);

  • 对于实时性要求很高的场景(查询的数据必须是最新的结果),将这些请求强制路由到主库上;

  • 执行完写操作之后,在读操作发生之前,让中间的时间变长(也就是从业务操作角度来做一些控制,不一定操作完了立刻查询);

  • 判断主备无延迟,可以通过判断seconds_behind_master参数、对比GTID、对比位点等方式,判断从数据库是否和主数据库一致。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

MYSQL中读写分离有什么样的好处呢,为什么一些人都选择读写分离?

很高兴能够看到和回答这个问题!

MySQL是世界上最受欢迎的开源数据库。凭借其经过验证的性能,可靠性和易用性,MySQL已成为基于Web的应用程序的领先数据库选择,被包括Facebook,Twitter,You Tube,Yahool等在内的知名Web财产所使用。

Oracle推动MySQL创新,提供了支持下一代Web,云,移动和嵌入式应用程序的新功能。

在大多数的网络操作中,读和写通常比较少,第一次读取的数据库称为小空间。如果我们想线性改进解决冲突,可以在数据库中使用 "模式"(创建和读取记录组)。

读取和记录分为数据库(INSERT、UPDATE、DELETE)和SELECT请求。数据库复制是用来同步数据库服务器的变化。

为了保证数据库产品的稳定性,很多数据库采用双重热处理。因此,数据库中的第一台服务器是产生附加、减少、修改操作的服务器;第二台数据库服务器只接收第一台服务器的备份数据(注:不同的数据库产品,第一台数据库服务器,备份数据不同 数据传输到第二台数据库服务器的方法)。如果第一数据库发生故障,第二数据库服务器可以立即连接到第一服务器数据库。第一价格数据库服务器故障后,第二服务器上的数据将继续拥有基础数据库(当第一数据库崩溃时,一些新的数据库无法发送到第二服务器数据库,所以这部分数据可能会丢失)。

MYSQL中读写分离有什么样的好处呢,为什么一些人都选择读写分离?

数据库不应分为读和写。如果程序使用的数据库比更新的数据库多,那么在大量请求的情况下,就会和数据库的主用户同步。我们可以减少数据库的压力,提高工作效率。当然,数据库还有其他优化方案。Memcache、平板电脑或者搜索引擎.这个决定了读写部分旨在提高系统的通过能力。有些网站的阅读和记录较多,但记录较少。但对实时读取数据的要求不高。这可能是解决方案。因此,在你的问题中,"数据还需要同步 "是错误的。事实上,这是因为用户有权在分离前的几秒或几分钟内读取和记录数据。

MySQL数据库服务是一项完全托管的数据库服务,使组织能够使用世界上最受欢迎的开源数据库来部署云原生应用程序。它是由MySQL团队100%开发,管理和支持的。

为了保证数据库产品的稳定性,很多数据库都经过了双重热处理。因此,数据库的第一台服务器是提供数据补充和删除的生产服务器,第二台服务器是主要处理数据的数据库服务器。从数据库的主要操作来看,数据库的操作就是补充和排除这四种操作。但对于 "补删 "这三项操作,如果环境中两辆车处于高度警戒状态,那么经过三项操作后的机器就会与其他服务器进行同步。MySQL是世界上最流行的开源数据库。无论你是快速增长的网络财产、技术ISV还是大型企业,MySQL都能低成本地帮助你提供高性能、可扩展的数据库应用。

读取和记录的分工可以包括多个可读取的数据库,比如3个外部用户服务数据库,120读取任务可以处理40条日志到一台电脑,只需要传输3条数据。当然,这个场景比剧本更适合阅读。

但如果需要两车同步,逻辑非常复杂,大大降低了性能。(从节约ACID特性的角度出发,为什么双向同步会如此复杂,性能又如此之低? 因此,第二台备份服务器只执行请求。因此,为了减少第一台服务器的负载,请将数据库中的所有操作都请求,第一台数据库服务器将被添加和删除。我们如果想要深度优化MySQL数据库,需要做的事情不是单方面的,而是要从成本及优化效果选择最适合当前企业需求的方案。所以本课程针对整个出发点,会从各个维度来让MySQL在运行过程中达到最优的状态。

如果读写是分开的,那么那些只用于读取的服务器就不要考虑最贵的城堡。只有在操作过程中,服务器应该使用高级一致性服务器。虽然读取服务器更新需要时间,但它只需要在更新时安装。所以基本上,这样的程序是以数据过时来换取读取速度的。

以上便是我的一些见解和回答,可能不能如您所愿,但我真心希望能够对您有所帮助!不清楚的地方您还可以关注我的头条号“每日精彩科技”我将竭尽所知帮助您!

码字不易,感觉写的还行的话,还请点个赞哦!

轉身離開灬 分类:数码

相关问题