什么是读写分离
读写分离就是将数据库分为了主从库,一个主库用于写数据,多个从库完成读数据的操作,主从库之间通过某种机制进行数据的同步,是一种常见的数据库架构。
为什么要读写分离
一般的数据库操作都是写入少读取多,所以主库用于写数据,从库用于读数据,这样就不会因为请求过大而使主库卡死。
假设,写请求是1000/s 读是5000/s,5000/s 请求,其中,4000/s 在缓存,1000/s 在数据库,数据每秒访问量2000
2000/s 数据库开始报警,cpu负载过高,4000/S 5000/s …. 直接卡死
什么情况缓存读不到数据?
1.缓存刚加上去,并没有把数据库
的历史数据导入缓存
2.缓存满了,自动删除了一些不常
用的数据
如何保证数据库的数据保持一致?
主从复制
什么是主从复制
主从复制就是建立一个和主数据库完全一样的数据库环境,就相当于把主库里的内容完完全全复制到从库中。
如何实现主从复制
Binlog 日志:增删改的操作会写入
一个日志,这个日志就是binlog日志
Relay日志:用来记录主库传来
的binlog日志
1.产生主从延迟主要看主库的写并发
2.主库写并发达到1000/s 从库的延迟会有几ms
3.主库的写并发达到2000/S 从库的延迟会达到几十毫秒
半同步 复制:主库写入binlog日志后,立即发给从库,
从库写入relay 日志后会返一个ack给主库,
主库至少得到一个ack才认为写操作完成了
并行复制:mysql5.7 以后从库开启多个线程,并行读取重放不同库的日志
Mysql5.6以后 主库的binlog日主也支持并行读取