实现方式一:在从节点上执行 "slaveof 主节点ip 端口" 命令,如下命令都是在从节点的 redis 上面执行的。html
127.0.0.1:6379> slaveof 192.168.1.45 6379 -- 确保主节点(192.168.1.45)的防火墙规则是放行的,使用命令后自身数据会被清空,但取消slave只是中止复制,并不清空。 127.0.0.1:6379> slaveof no one -- 取消复制,从节点的库不会清空旧数据,只是不从主库那里复制数据过来了。
实现方式二:修改配置文件,在从服务器的配置文件中加入:slaveof <masterip> <masterport>。该方案须要重启redis从节点才可生效,不建议使用。redis
# slaveof <masterip> <masterport> # replicaof <masterip> <masterport> slaveof 192.168.1.45 6379 # 方式一,链接主节点的ip、端口。 replicaof 192.168.1.45 6379 # 方式二,链接主节点的ip、端口。 masterauth 123456 # 若是主节点须要密码认证,则须要加上这行。主节点密码为:123456。 slave-read-only yes # 设置从节点只读不能写,目的是维持主从节点数据一致性。这一行能够不加。
实现方式三:在 redis-server 服务启动命令后加入 --slaveof <masterip> <masterport>sql
查看命令:bash
127.0.0.1:6379> info replication -- 查看主从复制状态。主节点客户端和从节点客户端均可以执行,能够看到复制的一些信息。 127.0.0.1:6379> keys * -- 查看当前redis中的全部key。
注意事项服务器
replicaof 192.168.1.45 6379 # 使用 replicaof 参数对master进行指定,下面是密码认证。 masterauth 123456 # 这是主节点 redis 服务的链接密码。通常改这个就行,若是不行,就再添加上面的一行。
1、当执行切主指令后,slave发生了什么?优化
所谓切主操做,无非就是直接从新指向另外一台redis节点做为新的master。即:slaveof ip portui
2、当断开了主从复制关系,slave节点上发生了什么?.net
http://www.javashuo.com/article/p-gsnnfcdr-mw.htmlcode
https://www.zbpblog.com/blog-167.htmlserver
https://zhuanlan.zhihu.com/p/112213386
https://www.cnblogs.com/mseddl/p/11470900.html