开发者学堂课程【数据库中间件ShardingSphere详解:ShardingSphere -读写分离(概念)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/666/detail/11252
ShardingSphere -读写分离(概念)
内容介绍:
一、前言
二、介绍读写分离及其原理
三、总结
一、前言
在前面的内容中,学习了用 Sharding-JDBC 实现对水平切分、垂直切分以及公共表的基本操作,接下来继续学习 Sharding-JDBC 的其他操作,即使用 Sharding-JDBC 实现对数据库读写分离操作。接下来的内容会分别介绍读写分离的概念及实现原理,然后在 MySQL 数据库中配置读写分离,最后使用 Sharding-JDBC 对读写分离操作后的数据进行操作。
二、介绍读写分离及其原理
1.读写分离操作
读写分离是提高大数据库查询效率一种方案,接下来会有两张图来具体介绍一下读写分离。先看第一张图(如下),
为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。它的原理是让主数据库( master )处理事务性增改删操作,而从数据库( slave )处理SELECT 查询操作。
比如现在要对数据库进行相关的操作,也就是增删改操作,而之前的方式,操作是针对某一个数据库,比如 DB数据库,之前不管是做增加修改删除这些操作都是一个数据库实现,这是之前的方式。如果是这种方式会发现如果数据量很大都是一个数据库提供会造成访问的性能问题,所以针对这种问题解决方案为读写分离。
什么叫读写分离,如下图,还是做相应的操作,操作内容为增删改操作,但是现在下面不是有一个数据库,可以有两个或者多个,第一个数据库叫 DB1,第二个叫 DB2,DB1理解为是一个主数据库,是主要的数据库在这里面描述 master 叫m;DB2 叫从数据库,叫做 slave ,为 s,这是两个数据库。什么叫读写分离,比如现在要做增加修改删除操作,让它去查询 DB1 主数据库,也就数增加修改删除去读取主数据库,而此时想做查询操作,就去读取从数据库 DB2,这个过程为读写分离。
但在过程会出现一个问题,现在做添加修改删除,只操作主数据库,从数据库并没有操作,现在向主数据库中加了数据,读从数据库,读不到数据,所以在这个过程中里面还要有一个操作,即主数据库和从数据库之间得有一个数据同步操作或数据复制操作。也就是在主数据库中加了数据库后,这个数据会同步到从数据库中,所以是可以读到的,这就是读写分离的基本概念。
然后再结合第一张图的文字内容,再次理解一下读写分离的概念。两台数据库也可以多台,做增删改操作,一台做读操作,让主数据库处理增删改操作,从数据库处理读操作,过程中要进行数据复制,比如向主数据库中增加修改删除之后,数据要同步到从数据库中,从而达到一主多从,多主多从的效果。以上内容就是读写分离的基本概念。
2.原理
接下来看第二张图(如下),它对读写分离操作的原理进行了一个讲解,大家可以先从这张图了解一下它的原理是怎么样的。
接下来画一个简单的流程图(如下)。以一主一从为例,现在有一个主服务器和一个从服务器,上图中可以清晰地看见,数据库中有一个日志功能,叫binlog 日志,用于记录数据库的增删改操作。如要进行读写分离操作,需要先开启 binlog 日志功能,防止遗忘而出现操作失误。先在主服务器中加入一个数据,但是要先开启 binlog 日志功能,记录这个操作,而从服务器会实时监控它的变化,进而及时实现数据同步。这里说到从服务器的另一个功能,即实时监控主服务器的 binlog 日志变化,并及时进行数据同步。这就是主从复制的原理过程。
三、总结
主从复制是指一台服务器进行增、删、改操纵,另一台用于查询操作,可以达到一主一从,一主多从或者多主多从的效果。读写分离的原理是实时监控binlog 日志的变化,如果日志发生变化,从服务器会进行读取,然后进行数据同步过程。在实际中操作中,我们经常会用到一主一从,或者一主多从,甚至是多主多从的情况。以上就是读写分离的基本概念及其原理,需要理解透彻。读写分离的目的是为了解决数据量过大造成效率过低的问题。
还有一点需要注意,在第二张图中也有写到, Sharding-JDBC通过 SQL 语义的分析,实现读写分离,具体一点就是, Sharding-JDBC 根据 SQL 语义的分析,将读操作和写操作分别路由至主库与从库,它提供透明化读写分离,让使用方尽量像使用一个数据库一样使用主从数据库集群。具体解释一下这句话的意思,看第一张简图,然后补充一下(如下图),现在如果要进行增删改操作, Sharding-JDBC 会进行一个判断,然后将操作路由到主数据库中,当出现 select语句时,它会将操作路由到从数据库中,这就是 Sharding-JDBC 透明化的过程。
以上就是读写分离的基本概念,在实际工作中,这种方式也是经常会用到。需要明白读写分离的概念及原理, binlog 日志的作用,以及 Sharding-JDBC 在读写分离里的作用。 Sharding-JDBC 只实现读写分离过程,不会进行数据同步,数据同步过程是由MySQL 数据库完成。以上就是本节对读写分离内容的相关介绍。