mysql学习—主备复制
主备复制的工作原理:
主备复制(主从复制),master(主服务器)会将每次改动的数据记录到自己的服务器上生成一个二进制文件(binary log),从服务器会使用master的授权账户登陆到主服务器,并且获取二进制文件保存到自己的中继日志(relay log)当中,然后自己的sql线程会负责读取这个中继日志,并执行一遍。master上的更改就同步到了slave上,就完成了主备复制。
主备复制分三种工作模式:异步/半同步/同步
异步:mysql默认的复制就是异步的,master将事件写入binlog,提交事务,自身并不知道slave是否接收是否处理。
缺点:不能保证所有事物都被所有slave接收。
半同步:提高了数据的安全性。当master上开启半同步复制功能时,至少有一个slave开启此功能。当master向slave提交事务,并且事务写入relay log中并刷新到磁盘上,slave才会告知master已收到;如果master提交事务受到阻塞,出现等待超时,在一定时间内master没有被告知已经收到,此时master会自动转换为异步复制模式。
缺点:半同步复制功能要在master和slave上都开启才会起作用,只开启一边,依然时异步复制。同时如果网络延迟高的话,也会造成一定程度的同步延迟。
同步:所谓的同步复制,master在提交事务之后,知道事务在所有slave上都提交才会返回客户端执行完毕信息。
缺点:因为需要等待所有从库执行完该事务才能返回结果,所以全同步复制的性能非常的受影响。
为什么要采用主备复制这种架构?
首先,主从复制可以提升稳定性。如果主服务器发生故障,我们可以使用从服务器来提供服务。其次,读写分离,从服务器只提供查询服务。最后,业务量越来越大,I/O访问效率过高,单机无法满足,可以通过硬件实现。