一:主从复制
原理
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的缓存中,所以中继日志的开销很小
二、读写分离
为啥要读写分离?
读的次数,远超过写的次数。一主多从,主接收写请求,通过复制机制将数据同步到从库,从库会设置只读,防止主从数据不一致。
从库的主要作用是:分担主库的读压力,执行备份任务,故障切换时,能够使用的备库
集中写,零散读,将压力分流。
三、分库分表
Sharding,也就是常说的分库分表,通过一定的策略把数据重新分布,主要解决单实例写入压力或容量过大的问题
四、数据预热
把热点数据(用户经常访问的)放到缓存里,减少数据库的压力,Redis缓存服务器(集群)
比如,上线的时候会重启服务,缓存数据就没有了,那么再把数据重新load进缓存,然后再接受外部访问