MySQL集群
在实际生产环境中,如果对mysql数据库的读和写都在一台数据库服务器中操作,无论是在安全性、高可用性,还是高并发等各个方面都是不能满足实际需求的,一般要通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。
- 主从复制,热备份&容灾&高可用
- 读写分离,支持更大的并发
主从复制
主从复制的流程:两个日志(binlog二进制日志&relay log日志)和三个线程(master的一个线程和 slave的二个线程)
- 主库的更新操作写入binlog二进制日志中
- master服务器创建一个binlog转储线程,将二进制日志内容发送到从服务器
- slave机器执行START SLAVE命令会在从服务器创建一个IO线程,接收master的binary log复制到其中继日志relay log
- 首先slave开始一个工作线程(I/O线程),I/O线程在master上打开一个普通的连接,然后开始binlog dump process,binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件,I/O线程将这些事件写入中继日志。
- sql slave thread(sql从线程)处理该过程的最后一步,sql线程从中继日志中读取事件,并重放其中的事件而更新slave机器的数据,使其与master的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于os缓存中,所以中继日志的开销很小
读写分离
读写分离就是在主服务器上修改,数据会同步到从服务器,从服务器只能提供读取数据,不能写入,实现备份的同时也实现了数据库性能的优化,以及提升了服务器安全。
目前较为常见的MySQL读写分离方式有:
|