1 什么是主从复制
就是一个master的mysql主机带多个slave的mysql主机。主要用途是缓解mysql的读压力,实现读写分离。写在master处写,但是读在slave处读,将读分散到各个slave上。
2 实现的原理
master开启binlog,开启一个专门的线程,将每次执行的insert、delete等写sql操作都记录在binlog中。
每个slave上开启两个线程,一个负责从master读取binlog,另外一个负责解析最新的binlog成一条条的sql语句,然后执行sql语句,以保证slave上的mysql数据库和master上的mysql数据库的同步。
3 存在的问题
会导致主从数据库同步延时,在高并发时这种延时是不可避免的,要想对上层应用保持主从的强一执行是有很大代价的,可以在写的时候必须要数据成功写到了所有的slaves时才返回成功,但是这样做代价很大,特别在高并发的时候基本上实现不了。
高并发下的同步延时解决办法,
比如一个博客网站,一个人上传了一篇博客,然后他想要再立马编辑一下,但是,这个时候这篇博客还没有同步到slave中,这个时候如果立即去slave中找的话,肯定是找不到的,然后返回404错误。怎么办呢?在mysql数据库上面弄一个缓存,上传的博客也放入该缓存中,然后读取的时候先去缓存中找,如果找不到再去mysql中读取。只要缓存足够大,可以解决很大的问题。