简介
主从复制就是replication。一个主机,复制一份从机。这样就有数据备份了,当然也可以实现主机主写、从机主读的读写分离。
生成实例
我们要在一台机子上整三个redis实例(最少就是要三个,而且要奇数)。
进入utils
,执行install_server.sh
。
这样会生成一个实例。
做三次,生成三个实例(端口号分别为6379、6380、6381),模拟多个机子的主从复制。
一主二从模式
用三个redis-cli去分别连接三个redis server。
看一下replication的信息:
每个server都是master。
我们以6379为主机,以6380和6381为从机。
特点
主机设置一个值。
从机能读到k1,但是自己不能设置值(只能读不能写)。
如果主机挂掉了。
从机的角色还是slave。
还是不能写。
此时主机再回来。
设置k2。
从机还是认得老大的。
那么,如果从机挂了呢?
我们让6380挂掉,然后主机设置一个值:
此时6380回来:
它是拿不到k3的。
它的角色是master:
因为我们没有在配置文件中设置,所以6380重新连上以后又变成了master。
如果此时认6379为老大呢?
就又能拿到主机设置的值了。
链路模式
还有一种主从复制,是串起来的。
6380认6379为老大,6381认6380为老大。
所以6380就会变成既是主节点,又是从节点。
可以看到,6380它的role还是slave,但是它里面既有主节点的信息,又有从节点的信息。
此时如果6379 set一个值:
6380和6381都能get到。
然而,由于6380的role没有变(slave),所以它依旧不能写:
我们看,如果老大死了:
6380依旧是slave。
但是它可以通过命令自己当老大:
6380去set一个值。
6381就能拿到了。
此时原来的大哥6379回来了也无济于事,它已经被排除在外了: