Redis主从复制原理及注意点
2019-01-29 本文已影响0人
wei_lu_lu
这里的主从是一主两(多)从
过程
1,当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。
2,master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进行程执行完毕后,maser将传送整个数据文件到slave以完成一次完全同步
3,全量复制:而slave服务在接收到数据库文件数据后,针其存盘关加载到内中(第一次全量)
4,增量复制:master继续将新的所所有收集到的修改命令依次传给slave,完成同步(之后增量)
5,但是只要重新连接master,一次完全同步(全量复制)将被自动执行。
可能存在的问题
- IO剧增
每次slave断开后(无论是主动断开,还是网络故障再连接master都要将master全部dump出来rdb再aof,即同步的过程都要重新执行一遍。所以多台slave不要一下子全部启动,否则master可能IO剧增(间隔1-2分钟) - 复制延迟
由于所有的写操作都是先在master上操作,然后同步更新到slave上,所以从master同步到slave上会有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,slave机器的增加也会使用这个问题问题更加严重 - 可用性不高
当有主节点发生异常情况,就会导致不能写入,导致业务出错(解决方式可以使用Redis-sentinel模式)
最后需要注意的是redis集群不保证数据的强一致性