当前位置: 代码网 > it编程>数据库>Redis > Redis server 主从复制配置实现

Redis server 主从复制配置实现

2024年05月18日 Redis 我要评论
0. 前言在redis运维篇的第5.6章节中,将讨论redis服务器的主从复制配置。在开始之前,让先来了解一下主从复制的概念和作用。主从复制是指将一个redis服务器的数据复制到其他redis服务器的

0. 前言

在redis运维篇的第5.6章节中,将讨论redis服务器的主从复制配置。在开始之前,让先来了解一下主从复制的概念和作用。

主从复制是指将一个redis服务器的数据复制到其他redis服务器的过程。在主从复制中,一个redis服务器充当主服务器,而其他redis服务器则充当从服务器。主服务器负责接收写操作,并将这些写操作传播到所有从服务器。从服务器则负责接收主服务器传播的写操作,并将这些写操作应用到自己的数据集中。

主从复制的主要作用是提高系统的可用性和性能。通过将数据复制到多个服务器上,即使主服务器发生故障,从服务器仍然可以提供读取服务,从而保证系统的可用性。此外,主从复制还可以将读操作分摊到多个服务器上,从而提高整个系统的读取性能。

在接下来的内容中,将详细讲解如何进行redis服务器的主从复制配置和示例。

1. 配置方式

步骤1: 准备硬件和网络

确保你的主机和从机的硬件资源符合运行redis的要求。主服务器和从服务器应该通过可靠的网络连接,确保两者之间的通信稳定且延迟较低。

这里我使用3台虚拟机来搭建一下,主服务器的ip为192.168.10.1,两个从服务器的ip分别为192.168.10.2和192.168.10.2,端口号都为6379,具体的配置如下

步骤2: 安装redis

根据你的操作系统,从redis官网下载安装包或使用相应的包管理器进行安装。
对于基于rpm的系统(如centos):

sudo yum install redis

对于基于debian的系统(如ubuntu):

sudo apt-get update
sudo apt-get install redis-server

对于macos(使用homebrew):

brew install redis

我的是centos 7
192.168.10.1192.168.10.2192.168.10.3分别安装完redis 并开放防火墙6379端口号
有两种方式,看你的操作系统的支持。

  • 使用firewall
# 检查当前防火墙规则:
sudo firewall-cmd --list-all 
#  如果没有特定规则,可以使用以下命令开放端口 6379:
sudo firewall-cmd --add-port=6379/tcp --permanent 
# 重新加载防火墙规则:
sudo firewall-cmd --reload
  • 或者使用iptables
sudo iptables -a input -p tcp --dport 6379 -j accept

分别修改三台服务器的配置如下

daemonize yes
# 绑定的主机地址,这里注释掉,开放ip连接
#bind 127.0.0.1
logfile "redis.log"
requirepass 123456

步骤3: 配置主服务器的redis

编辑redis配置文件(通常位于/etc/redis/redis.conf/usr/local/etc/redis.conf),进行以下设置:

# 启用aof持久化模式,以保证数据安全
appendonly yes

# 如果需要密码认证,取消以下注释并设置密码
requirepass 123456

重启redis服务来应用新的配置:

sudo service redis-server restart

或在系统中使用对应的命令,如systemctl等。

步骤4: 配置从服务器的redis

在从服务器上,同样编辑redis配置文件。添加以下设置:

# 指定主服务器的地址和端口
slaveof 192.168.10.1 6379

# 如果主服务器设置了密码,配置从服务器的masterauth以匹配主服务器的密码
masterauth 123456

# 设置从服务器为只读模式
slave-read-only yes

# 设置从服务器与主服务器断开连接时的超时时间,单位为秒
repl-timeout 60

# 设置从服务器向主服务器发送ping的频率,单位为秒
repl-ping-slave-period 10

重启从服务器的redis服务以应用新的配置。

步骤5: 测试复制功能

在主服务器上执行redis命令,添加一些数据:

redis-cli -a 123456
set key1 "value1"

然后,在从服务器上执行:

redis-cli -a 123456
get key1

如果返回的是"value1",表示复制功能正常。

步骤6: 监控复制状态

使用以下命令在主服务器和从服务器上查看复制的状态和信息:

redis-cli -a 123456
info replication

会看到类似于以下的信息:

192.168.10.1:6379> info replication
# replication
role:master
connected_slaves:2
slave0:ip=192.168.10.2,port=6379,state=online,offset=700,lag=0
slave1:ip=192.168.10.3,port=6379,state=online,offset=700,lag=0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:700
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:700

192.168.10.2:6379> info replication
# replication
role:slave
master_host:192.168.10.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:854
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:854
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:57
repl_backlog_histlen:798

192.168.10.3:6379> info replication
# replication
role:slave
master_host:192.168.10.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:854
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:854
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:854

2. 参考文档

https://redis.io/docs/management/replication/

到此这篇关于redis server 主从复制配置实现的文章就介绍到这了,更多相关redis server 主从复制配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

  • Redis实现商品秒杀的示例代码

    Redis实现商品秒杀的示例代码

    随着互联网的发展和消费者的需求越来越高,商品的销售也变得越来越激烈。而对于商家来说,最直观的解决方式即为促销活动。然而,促销活动也会引发一定的风险。如果处理得不... [阅读全文]
  • Java实现多级缓存的方法详解

    Java实现多级缓存的方法详解

    对于高并发系统来说,有三个重要的机制来保障其高效运行,它们分别是:缓存、限流和熔断。而缓存是排在最前面也是高并发系统之所以高效运行的关键手段,那么问题来了:缓存... [阅读全文]
  • Redis实现用户关注的项目实践

    Redis实现用户关注的项目实践

    在实现社交网络功能中,实现互相关注是必不可少的。在这里,我们将使用redis来实现这个功能,前端使用vue框架实现。功能要求我们需要实现以下几个功能:用户能够关... [阅读全文]
  • 如何利用Redis List实现Java数据库分页快速查询

    如何利用Redis List实现Java数据库分页快速查询

    前言在大型应用中,数据库分页查询是日常开发中不可避免的需求之一。随着数据量的不断增加,传统的数据库分页方式可能会变得效率较低。为了解决这一问题,本文将介绍如何使... [阅读全文]
  • 浅析Redis如何保证数据不丢失

    引言大家即使没用过redis,也应该都听说过redis的威名。redis是一种nosql类型的数据存储,全称remote dictionary server,也就是远程字典服务器,…

    2024年05月18日 数据库
  • Redis分布式可重入锁实现方案

    Redis分布式可重入锁实现方案

    前言在单进程环境下,要保证一个代码块的同步执行,直接用synchronized 关键字或reetrantlock 即可。在分布式环境下,要保证多个节点的线程对代... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com