当前位置:网站首页>Redis入门完整教程:复制配置
Redis入门完整教程:复制配置
2022-07-06 19:11:00 【谷哥学术】
6.1.1 建立复制
参与复制的Redis实例划分为主节点(master)和从节点(slave)。默认
情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以
同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节
点。配置复制的方式有以下三种:
1)在配置文件中加入slaveof{masterHost}{masterPort}随Redis启动生
效。
2)在redis-server启动命令后加入--slaveof{masterHost}{masterPort}生
效。
3)直接使用命令:slaveof{masterHost}{masterPort}生效。
综上所述,slaveof命令在使用时,可以运行期动态配置,也可以提前写
到配置文件中。例如本地启动两个端口为6379和6380的Redis节点,在
127.0.0.1:6380执行如下命令:
127.0.0.1:6380>slaveof 127.0.0.1 6379
slaveof配置都是在从节点发起,这时6379作为主节点,6380作为从节
点。复制关系建立后执行如下命令测试:
127.0.0.1:6379>set hello redis
OK
127.0.0.1:6379>get hello
"redis"
127.0.0.1:6380>get hello
"redis"
从运行结果中看到复制已经工作了,针对主节点6379的任何修改都可以
同步到从节点6380中,复制过程如图6-1所示。

slaveof本身是异步命令,执行slaveof命令时,节点只保存主节点信息后
返回,后续复制流程在节点内部异步执行,具体细节见之后6-3复制原理小
节。主从节点复制成功建立后,可以使用info replication命令查看复制相关
状态,如下所示。
1)主节点6379复制状态信息:
127.0.0.1:6379>info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6379,state=online,offset=43,lag=0
....
2)从节点6380复制状态信息:
127.0.0.1:6380>info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
...
6.1.2 断开复制
slaveof命令不但可以建立复制,还可以在从节点执行slaveof no one来断
开与主节点复制关系。例如在6380节点上执行slaveof no one来断开复制,如
图6-2所示。

断开复制主要流程:
1)断开与主节点复制关系。
2)从节点晋升为主节点。
从节点断开复制后并不会抛弃原有数据,只是无法再获取主节点上的数
据变化。
通过slaveof命令还可以实现切主操作,所谓切主是指把当前从节点对主
节点的复制切换到另一个主节点。执行slaveof{newMasterIp}
{newMasterPort}命令即可,例如把6380节点从原来的复制6379节点变为复
制6381节点,如图6-3所示。
切主操作流程如下:
1)断开与旧主节点复制关系。
2)与新主节点建立复制关系。
3)删除从节点当前所有数据。
4)对新主节点进行复制操作。
运维提示
切主后从节点会清空之前所有的数据,线上人工操作时小心slaveof在错
误的节点上执行或者指向错误的主节点。
6.1.3 安全性
对于数据比较重要的节点,主节点会通过设置requirepass参数进行密码
验证,这时所有的客户端访问必须使用auth命令实行校验。从节点与主节点
的复制连接是通过一个特殊标识的客户端来完成,因此需要配置从节点的
masterauth参数与主节点密码保持一致,这样从节点才可以正确地连接到主
节点并发起复制流程。
6.1.4 只读
默认情况下,从节点使用slave-read-only=yes配置为只读模式。由于复
制只能从主节点到从节点,对于从节点的任何修改主节点都无法感知,修改
从节点会造成主从数据不一致。因此建议线上不要修改从节点的只读模式。
6.1.5 传输延迟
主从节点一般部署在不同机器上,复制时的网络延迟就成为需要考虑的
问题,Redis为我们提供了repl-disable-tcp-nodelay参数用于控制是否关闭
TCP_NODELAY,默认关闭,说明如下:
·当关闭时,主节点产生的命令数据无论大小都会及时地发送给从节
点,这样主从之间延迟会变小,但增加了网络带宽的消耗。适用于主从之间
的网络环境良好的场景,如同机架或同机房部署。
·当开启时,主节点会合并较小的TCP数据包从而节省带宽。默认发送
时间间隔取决于Linux的内核,一般默认为40毫秒。这种配置节省了带宽但
增大主从之间的延迟。适用于主从网络环境复杂或带宽紧张的场景,如跨机
房部署。
运维提示
部署主从节点时需要考虑网络延迟、带宽使用率、防灾级别等因素,如
要求低延迟时,建议同机架或同机房部署并关闭repl-disable-tcp-nodelay;如
果考虑高容灾性,可以同城跨机房部署并开启repl-disable-tcp-nodelay。
边栏推荐
猜你喜欢

Classify the features of pictures with full connection +softmax

unity 自定义webgl打包模板

Pioneer of Web3: virtual human

【Socket】①Socket技术概述

The third season of ape table school is about to launch, opening a new vision for developers under the wave of going to sea

fiddler的使用

Apifox, is your API interface document rolled up like this?

Derivative, partial derivative, directional derivative

MES管理系统的应用和好处有哪些

Planning and design of double click hot standby layer 2 network based on ENSP firewall
随机推荐
Unity webgl adaptive web page size
Overall query process of PostgreSQL
人脸识别应用解析
Leetcode:minimum_ depth_ of_ binary_ Tree solutions
Matlb| economic scheduling with energy storage, opportunity constraints and robust optimization
Contribution of Writing Series
Use of pgpool II and pgpooladmin
[C # notes] reading and writing of the contents of text files
Introduction to the internal structure of the data directory of PostgreSQL
Five reasons for clothing enterprises to deploy MES management system
基于ensp防火墙双击热备二层网络规划与设计
1--新唐nuc980 NUC980移植 UBOOT,从外部mx25l启动
Leetcode:minimum_depth_of_binary_tree解决问题的方法
C语言练习题_1
HAVE FUN | “飞船计划”活动最新进展
如何设计好接口测试用例?教你几个小技巧,轻松稿定
6-6漏洞利用-SSH安全防御
CSDN 夏令营课程 项目分析
B站6月榜单丨飞瓜数据UP主成长排行榜(哔哩哔哩平台)发布!
代码调试core-踩内存