主从复制的配置
两种配置方式:
1、slaveof命令
举例:
这条命令是:让6382这个节点从本机6379这个节点进行复制,(即6379为master,6382为slave) 返回结果OK ,这里返回结果是异步的,也就是说执行完命令会立刻返回,实际上后台还有很多的操作。
取消复制:
这条命令代表6382不再成为任何节点的从节点
这里有两个注意点:
1、之前从master复制过来的数据并不会丢失,只是不再同步之前master(如上图的6379节点)后续写入的数据
2、这条命令也可以用来改变其所属的master节点,即重新成为另一台master的slave,但是新的master首先就会把从节点的数据全部清除掉。(全量复制)
2、修改配置文件
slaveof ip port --- 成为某个主节点的从节点,这里ip和port是所指向的master节点
slave-read-only yes --- 当前从节点只做读的操作,不允许写
下面是我在同一机器上的一个演示:在master节点(6379)上执行 info replication命令可以看到这个节点的相关信息
接着我们启动从节点,并执行下info replication命令,可以看到从节点相关信息
主节点再执行info replication命令,可以看到当前master的从节点个数以及从节点信息
接下来,我们可以看到在主节点上增加的数据,以及同步到了从节点
接着我们尝试在从节点上写入数据,会得到一个错误,不能在从节点上进行写操作
runId和复制偏移量
什么是runId?runId是redis在每次启动的时候,都会有一个随机的ID,来唯一标识这个节点,当redis关闭runId消失,重启又会产生一个新的runId
可以用 redis 的 info 命令来查看当前runId:
什么是偏移量? 偏移量是当redis每次写入数据时,偏移量都会增加,这个是只从复制时,用来对比主从同步的状态,如果当master 的偏移量远高于slave的偏移量时,就是master写了很多数据,而slave没有同步,这就证明我们主从同步有问题。
可以用info replication查看当前master节点和slave节点的偏移量
上图可以看到 我们的主从两个节点的偏移量是相等的,代表数据同步没有问题。