一:主从复制

原理

  • master将改变记录到二进制日志中(Binary log)

  • slave将master的binary log拷贝到它的中继日志(relay log)

    slave开始一个工作线程---I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process,从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。

  • slave重做中继日志中的事件

    SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小

主从复制、读写分离、分库分表_第1张图片


二、读写分离

为啥要读写分离?

  • 读的次数,远超过写的次数。一主多从,主接收写请求,通过复制机制将数据同步到从库,从库会设置只读,防止主从数据不一致。

  • 从库的主要作用是:分担主库的读压力,执行备份任务,故障切换时,能够使用的备库

  • 集中写,零散读,将压力分流。


三、分库分表

  • Sharding,也就是常说的分库分表,通过一定的策略把数据重新分布,主要解决单实例写入压力或容量过大的问题


四、数据预热

  • 把热点数据(用户经常访问的)放到缓存里,减少数据库的压力,Redis缓存服务器(集群)

  • 比如,上线的时候会重启服务,缓存数据就没有了,那么再把数据重新load进缓存,然后再接受外部访问