当前位置:首页 > 问答 > 正文

快速搭建Redis主从环境,配置步骤和注意点分享给你

快速搭建Redis主从环境,配置步骤和注意点分享

这个搭建过程其实很简单,就是把一台Redis服务器设置成老大(主节点),其他一台或多台设置成小弟(从节点),让小弟自动去同步老大的数据,这样做的最大好处就是数据有了备份,万一老大宕机了,小弟还能顶上去,保证了数据不丢失和服务的高可用性,下面我以两台Linux服务器为例,假设主节点IP是192.168.1.100,从节点IP是192.168.1.101。

第一步:准备工作

  1. 安装Redis:确保两台服务器上都已经安装好了相同版本的Redis,可以直接用系统自带的包管理器安装,比如在CentOS上用yum install redis,在Ubuntu上用apt-get install redis-server,版本一致可以减少一些不必要的兼容性问题。
  2. 检查网络:确保主从服务器之间网络是通的,可以用ping命令测试一下,防火墙要放行Redis的端口(默认是6379),如果服务器有外网IP,为了安全起见,最好在配置文件中设置密码并限制可访问的IP。

第二步:配置主节点(Master)

主节点的配置其实非常省心,默认情况下它就已经是主节点了,我们主要需要检查并修改几个关键配置,找到主服务器的Redis配置文件,通常是/etc/redis.conf

  • 绑定地址:找到bind这一行,默认可能是bind 127.0.0.1,这表示只允许本机连接,为了让从节点能连上来,需要改成服务器内网IP,比如bind 192.168.1.100 127.0.0.1,或者直接注释掉这行(#bind 127.0.0.1)允许所有连接(生产环境不推荐)。
  • 保护模式:如果修改了bind设置,最好也把protected-mode设置为no,否则可能还是连不上。
  • 设置密码(可选但推荐):找到requirepass这一行,去掉注释,设置一个复杂的密码,比如requirepass MyRedisMasterPass123,这样从节点连接时需要密码,更安全。
  • 保存并重启:修改完配置后,保存文件,然后重启Redis服务让配置生效,在CentOS上可以用systemctl restart redis

主节点配置就这些,它现在已经在6379端口等待连接了。

第三步:配置从节点(Slave)

从节点的配置是核心,同样编辑从服务器的/etc/redis.conf文件。

  • 指定主节点:找到replicaof(在旧版本中可能是slaveof)这一行,去掉注释,填写主节点的IP和端口,在我们的例子中就是:replicaof 192.168.1.100 6379,这一句就告诉了当前Redis实例:“你去当192.168.1.100的小弟”。
  • 主节点密码:如果主节点设置了密码,我们还得告诉从节点密码是什么,找到masterauth这一行,去掉注释,填写主节点的密码:masterauth MyRedisMasterPass123,没有这个密码,从节点是无法与主节点建立同步连接的。
  • 从节点只读:默认情况下,replica-read-only被设置为yes,这意味着从节点是只读的,所有写操作必须到主节点上去执行,这个一般保持默认就行,可以防止数据不一致。
  • 保存并重启:同样,保存配置文件,然后重启从节点的Redis服务。

第四步:验证主从同步

配置完成后,如何知道是否成功了呢?

  1. 连接主节点:用Redis客户端连接上主节点:redis-cli -h 192.168.1.100 -a MyRedisMasterPass123
  2. 写入数据:在主节点上设置一个键值对,比如set mykey "hello from master"
  3. 连接从节点:再用客户端连接从节点:redis-cli -h 192.168.1.101 -a MyRedisMasterPass123(如果从节点也设了密码,就用它的密码)。
  4. 读取数据:在从节点上尝试读取刚才在主节点设置的键:get mykey,如果能看到"hello from master",恭喜你!主从同步已经成功建立了。
  5. 查看信息:可以在从节点上输入info replication命令,会看到非常详细的信息,比如它自己的角色(role:slave)、主节点的地址、同步状态(state=online表示连接正常)、已经同步的数据偏移量等,在主节点上执行这个命令,能看到连接上来的从节点信息。

重要的注意点分享

  1. 数据流向是单向的:数据只能从主节点流向从节点,绝对不能直接在从节点上写数据(除非关闭只读模式,但这会带来数据混乱的风险)。
  2. 同步的时差问题:从节点的数据同步是异步进行的,这意味着主节点写入数据后,从节点可能会有一个极短的延迟才能收到数据,所以在某些对数据一致性要求极高的场景下,需要意识到可能存在“主从数据短暂不一致”的情况。
  3. 密码一致性masterauth的密码必须和主节点配置文件里的requirepass密码完全一致,包括大小写。
  4. 持久化机制:主从同步依赖于持久化,新上线的从节点会先请求主节点发送一个完整的数据快照(RDB文件)来进行全量同步,然后再同步期间的增量命令,所以确保主节点的RDB快照或AOF日志功能是正常工作的。
  5. 从节点宕机恢复:如果从节点短暂宕机后重启,它会自动重新连接主节点,并尝试进行增量同步,只拉取它宕机期间错过的命令,但如果宕机时间太长,导致主节点已经没有了它需要的增量日志,那么就会触发一次全量同步。
  6. 主节点宕机处理:Redis主从本身不具备自动故障转移功能,如果主节点宕机,需要手动将一个从节点“晋升”为新的主节点(通过在从节点上执行replicaof no one命令),然后修改其他从节点和应用程序的配置,指向新的主节点,为了实现自动化,通常我们会使用Redis Sentinel(哨兵)或者Redis Cluster(集群)方案。

就是快速搭建Redis主从环境的全部步骤和关键注意点,整个过程并不复杂,核心就是修改那几个配置参数并确保网络和密码通畅,多动手操作一遍,印象会更深刻。

快速搭建Redis主从环境,配置步骤和注意点分享给你