MySQL读写分离、MySQL锁、分布式MySQL
一:MySQL读写分离
大型网站为了解决大量的并发访问,除了在网站实现分布式负载均衡之外还远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别是数据丢失的话,后果更是不堪设想。这时候,我们会考虑如何减少数据库的连接,下面就进入我们今天的主题。
利用主从数据库来实现读写分离,从而分担主数据库的压力。在多个服务器上部署mysql,将其中一台作为主数据库,而其它作为从数据库,实现主从同步。其中主数据库负责主动写的操作,而从数据库则只负责主动读的操作(slave从数据库仍然会被动的进行写操作,为了保持数据一致性),这样就可以很大程度上的避免数据丢失的问题,同时也可减少数据库的连接,减轻主数据库的负载。 那么主数据库和从数据库是怎么保证数据一致的呢?
首先主服务器主要进行写操作。它会把执行写入操作的SQL语句记录日志文件 bin log 中。
从服务器中有两个核心的线程。IO线程、SQL线程
主服务器利用IO线程将 bin log 传送到从服务器中,从服务器将其写入到 relay log(中继日志) 中,
当外部需要读数据时会通过SQL线程,SQL线程会从 relay log 读到它想获取的数据。
一般从服务器中会存放数据库的快照,便于解决主服务器数据丢失的情况。 MySQL的读写分离是建立在主从架构的基础之上的,而主从模式是基于两个 log 实现的。
二:MySQL锁
三:分布式MySQL
MySQL外部的分布式事务 当读写分离的设计还扛不住高并发的场景,那么我们就可以对MySQL进行分布式处理。
MySQL内部的分布式事务
|