我们之前讲解了 Redis,它是一种高性能的内存数据库;而 MySQL 是基于磁盘文件的关系型数据库,相比于 Redis 来说,读取速度会慢一些,但是功能强大,可以用于存储持久化的数据。在实际工作中,我们常常将 Redis 作为缓存与 MySQL 配合来使用,当有数据访问请求的时候,首先会从缓存中进行查找,如果存在就直接取出,如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。可以说使用 Redis 这种缓存架构是高并发架构中非常重要的一环。
当然我们也可以对 MySQL 做主从架构并且进行读写分离,让主服务器(Master)处理写请求,从服务器(Slave)处理读请求,这样同样可以提升数据库的并发处理能力。不过主从架构的作用不止于此,我们今天就从以下几个方面了解一下它:
为什么需要主从同步,设置主从同步有什么样的作用?
主从同步的原理是怎样的?在进行主从同步的同时,会引入哪些问题?
为了保证主从同步的数据一致性,都有哪些方案?
为什么需要主从同步
首先不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的,如果我们的目的在于提升数据库高并发访问的效率,那么首先需要考虑的应该是如何优化你的 SQL 和索引,这种方式简单有效,其次才是采用缓存的策略,比如使用 Redis,通过 Redis 高性能的优势将热点数据保存在内存数据库中,提升读取的效率,最后才是对数据库采用主从架构,进行读写分离。
按照上面的方式进行优化,使用和维护的成本是由低到高的。
主从同步设计不仅可以提高数据库的吞吐量,还有以下 3 个方面的作用。
首先是可以读写分离。我们可以通过主从复制的方式来同步数据,然后通过读写分离提高数据库并发处理能力。
简单来说就是同一份数据被放到了多个数据库中,其中一个数据库是 Master 主库,其余的多个数据库是 Slave 从库。当主库进行更新的时候,会自动将数据复制到从库中,而我们在客户端读取数据的时候,会从从库中进行读取,也就是采用读写分离的方式。互联网的应用往往是一些“读多写少”