今天来聊一个简单但重要的问题。最近自己搭建了一个项目玩一下,跑起来也是挺顺溜的,但是,在做压测的时候,发现接口的性能出现瓶颈,最后发现慢动作出现在MySQL.
这可咋办呢?索引也优化了,连接池也用上了,Redis缓存命中率也符合预期。然而,所有的请求都集中在一台主MySQL上,压测的时候,还是挺吃力的,那就来试试读写分离吧。
一. 主从复制逻辑
数据库一主多从,是很经典的结构,对于数据库的容灾、可扩展性和高可用性,都是有好处的。一主多从,依赖于主从复制,下面是主从复制的逻辑图,一起来看看:
主从复制后,可以认为,从库和主库的内容是"一致"的,这里指的是最终一致性。 对读实时性要求不高的业务场景中,读写分离是没有问题的,数据会最终一致。
然而,必须要说的是,由于主从复制需要时间,向主库写入数据后,如果直接从从库读取,可能读不到最新的值。所以,具体读主库还是从库,取决于业务场景。
主从复制后,就可以开心地进行读