一、mysql读写分离
为了提升数据库的性能,一般会采用读写分离,即写请求去主库,读请求去从库。
二、mysql主从复制
支持开启多个IO线程,可以提升效率。
2.1 如果主库还未同步数据至从库,就挂掉了,这时候应该怎么办?
打开mysql的semi-sync 半同步复制功能,即数据落库,写入binlog,并至少同步给一台从库的relay日志,才算写成功。
2.2 并行复制
从库开启多个SQL线程,可以并发读取relay日志,操作数据,缩小延迟的时间。
从库读binlog日志,写relay日志,操作数据都是串行执行的。所以从库的数据比主库晚一些执行,主从复制是有延迟的。
主库的写并发达到1000/s时,从延迟几毫秒;
主库的写并发达到2000/s时,从延迟几十毫秒;
主库的写并发达到4000/s以上,从延迟几秒;
三、mysql主从延迟
如何解决主从延迟?
1、分主库,将一个主库拆分成多个主库,放在多个服务器上,降低并发,那么主从延迟就可以忽略不计。
2、开启多个IO线程,sql线程,缩小主从延迟的时间,一旦写入的并发真的很高,这个也是没有用的。
3、改代码,插入数据之后,不要立即查询。
4、如果必须先插入,立马就要查询,那就强制读主库。