redis主从复制

主从复制的配置

两种配置方式: 

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节点的偏移量

上图可以看到 我们的主从两个节点的偏移量是相等的,代表数据同步没有问题。

猜你喜欢

转载自my.oschina.net/u/3371837/blog/1787601