目录
主从复制
主从复制流程:
为什么要有relay log中继日志?
为什么要有主从复制,好处?
实际生产环境中。如果对MySQL数据库的读写都在一台数据库服务器中操作,无论是再安全性、高可用性,还是高并发性等方面都不能满足实际需求,一般要通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。
1、数据备份 - 热备份&容灾&高可用
2、读写分离,支持更大的并发
主从复制
主从复制的流程:两个日志(binlog二进制日志&relay log日志)和三个线程(master的一个线程和 slave的二个线程)
主从复制流程:
1. 主库更新操作写入binlog二进制日志中,主库是要开启二进制日志的;
2. master服务器创建一个binlog转存线程,将二进制日志发送到slave服务器;
3. slave服务器执行START SLAVE命令会在slave服务器创建一个IO线程,接收master服务器的binary log数据并复制到relay log(中继日志)
首先slave开始一个工作线程(I/O线程),I/O线程在master上打开一个普通的连接,然后开始 binlog dump process, binlog dump process从master的二进制日志中读取事件,如果已经跟上 master,它会睡眠并等待master产生新的事件,I/O线程将这些事件写入中继日志。
4. sql slave thread(sql从线程)处理该过程的最后一步,sql线程从中继日志中读取事件,并重放其 中的事件而更新slave机器的数据,使其与master的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于os缓存中,所以中继日志的开销很小。
为什么要有relay log中继日志?
主要是为了保证数据的一致性和可靠性。主库发过来的二进制日志数据会存到从库的relay log上,并在后续的过程中应用这些操作到自己的数据库中。
避免因网络故障、从库宕机等原因导致数据丢失或数据不一致的问题。
从库出现故障导致数据丢失或者不一致,可以通过relay log来重新同步数据。
为什么要有主从复制,好处?
1. 可以实现数据备份
可实现热备份,可通过数据库中间件mycat可直接配置热备份容灾,主库挂掉之后,mycat会自动将请求映射到从库,由从库继续对外提供服务。
容灾:系统出现故障或异常情况时,能够保持系统的可用性和稳定性,避免系统崩溃或数据丢失。
高可用:指系统或服务在出现故障或异常情况时,能够保持正常的运行状态,不会导致系统的崩溃或数据的丢失,从而保证业务的连续性和可靠性。
2. 读写分离
实际应用中更多的是读操作,主库专门用来做数据的修改,主库通过主从复制通过bin log同步到从库上去,客户端查询的请求最终映射到从库上,一般来说一个主库可带上从库的数量根据网络以及硬件来确定,主库做数据更新存储数据,从库专门用来进行读操作,分摊读写压力。