首页 > 数据库 >redis主从复制

redis主从复制

时间:2023-07-31 21:13:17浏览次数:36  
标签:主从复制 主机 redis 6379 6381 6380 conf

1. 概念

指将一台Redis服务器的数据,复制到其它的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。

2. 配置步骤

1、在/etc/redis下面,将6379.conf拷贝两份,分别称为6380.conf与6381.conf

2、修改配置文件6380.conf与6381.conf中的内容

redis默认端口是 6379,复制多份占用别的端口。

/etc/redis/6380.conf

修改内容: port、pidfile、logfile、dbfilename、appendfilename

port 6380
pidfile "/var/run/redis_6380.pid"
logfile "/var/log/redis_6380.log"
dbfilename "dump6380.rdb"
appendfilename "appendonly6380.aof"

/etc/redis/6381.conf

修改内容: port、pidfile、logfile、dbfilename、appendfilename

port 6381
pidfile "/var/run/redis_6381.pid"
logfile "/var/log/redis_6381.log"
dbfilename "dump_6381.rdb"
appendfilename "appendonly_6381.aof"

3. 启动多个配置文件

sudo redis-server /etc/redis/6379.conf
sudo redis-server /etc/redis/6380.conf
sudo redis-server /etc/redis/6381.conf

启动后通过 ps -elf | grep redis 查看。

[root@arch ~]# ps -elf | grep redis
5 S root         827       1  0  80   0 - 14616 do_epo 15:25 ?        00:00:16 redis-server 127.0.0.1:6379
5 S root        1878       1  0  80   0 - 14616 do_epo 19:58 ?        00:00:00 redis-server 127.0.0.1:6380
5 S root        1886       1  0  80   0 - 14616 do_epo 19:58 ?        00:00:00 redis-server 127.0.0.1:6381
0 S root        1892    1673  0  80   0 -  2417 pipe_r 19:58 pts/0    00:00:00 grep --color redis

开启多个终端,进入各自对应的客户端。

redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381

使用 info replication 查看主从信息。

4. 设置主从

默认情况,机器都是自认为自己是主机的状态。

# 6379 同 6380、 6381
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:3c4a35f44d9d0043f21b93c44a4e2a7b3e0618f3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379> 

slaveof

令 6380 作为6379的从机。在6380上执行 slaveof 6379_ip 6379_port ,也可以使用 slaveof no one 不作为任何机器的从机。

性质:

  • 从机不允许写操作。

  • 从机挂了,主机立马感知到。从机再次上线,初始状态为自认为主机。

  • 默认主机挂了,从机等待主机上线。

5. 哨兵模式

如果主机挂了,应让其他的从机之间再次选举出新的主机。通过设置哨兵监视主机。

当主机挂掉之后,会执行流言协议(造谣)与投票协议(少数服从多数)

配置步骤

1、在/etc/redis下面创建,sentinel.conf,然后给文件添加如下命令

#sentinel monitor {masterName} {masterIp} {masterPort} {quorum}
#sentinel monitor 主节点名称   主节点Ip    主节点端口  投票数
sentinel monitor master6379 127.0.0.1 6379 1

2、启动哨兵模式(将哨兵对应的配置文件启动)

sudo redis-sentinel /etc/redis/sentinel.conf

3、当主机6379挂掉之后,哨兵会执行流言协议与投票协议,将票数投递给6380或者6381,最后6380或者6381谁得到了票数多,谁就是新的主机。

总结:

传统的主从复制,主机挂掉之后,从机 会等待主机上线,如果主机一直不上线,那么传统主从复制就不能写操作,表明是有问题的。现在哨兵模式,可以解决主机挂掉之后,从机不能推选新主机的现象,也就是可以解决不能写的现象。

标签:主从复制,主机,redis,6379,6381,6380,conf
From: https://www.cnblogs.com/zxinlog/p/17594491.html

相关文章

  • Java面试题 P18:Redis篇:Redis使用场景-缓存-缓存雪崩
          缓存雪崩:是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量的请求到达数据库,带来巨大压力。                            ......
  • redis快-IO多路复用
    IO多路复用Redis中的IO多路复用在Redis中,也使用了I/O多路复用来实现高效的网络通信。Redis是一个高性能的键值存储数据库,其主要通过使用非阻塞I/O和I/O多路复用来处理并发连接,提高网络通信的性能。Redis使用了多个I/O多路复用模型,根据不同的操作系统平台和版本,可能采用select、......
  • Redis proxy 组件之 Predixy
    Predixy是一款高性能全特征redis代理,支持redis-sentinel和redis-cluster组件特性:Predixy支持的功能为什么需要redisproxy?屏蔽redis架构的复杂性,使后端开发人员无论是用redissentinel还是rediscluster集群,都像使用单机redis实例一样方便。集群扩缩容......
  • Linux Redis配置
    Redis是一个开源的高性能键值对存储系统,具有快速、灵活和可扩展的特性。它是一个基于内存的数据结构存储系统,可以用作数据库、缓存和消息代理。Redis的一些主要特点和用途:高性能:Redis数据存储在内存中,因此能够提供极快的读写操作。它采用单线程模型和异步I/O,避免了多线程的......
  • Redis从入门到放弃(5):事务
    1、事务的定义Redis的事务提供了一种“将多个命令打包,然后一次性、按顺序地执行”的机制。redis事务的主要作用就是串联多个命令防止别的命令插队。但是,事务并不具有传统数据库事务的特性,如回滚。2、事务命令Redis中的事务可以通过以下命令来执行:MULTI:用于开启一个事务块,......
  • redis monitor 监控说明
    1、监视器Redis监视器是用于监控或观察Redis服务器指令执行的一种特殊的客户端。创建Redis监视器的方式也很简单,启动一个客户端后,执行monitor指令,客户端将进入监视器状态。进入监视器状态的客户端将不再接受Redis指令输入,而称为了一个实时接受服务器指令执行信息的消费者。如下图......
  • python操作redis
    redis/relate一、python连接redis1.方式一importredis#创建连接对象r=redis.Redis(host='127.0.0.1',port=6379)r.set('name','zhangsan')print(r.get('name'))2.方式二使用连接池当并发量比较高的时候,频繁的创建连接和释放连接会对性能有影响,使......
  • redis常见的5中数据类型以及相关命令
    redisredis简介redis是采用ASNIC语言编写的采用的是C/S架构是非关系型数据库以键值对的形式存储在内存中redis在windows中的启动命令redis-serverredis.windows.confredis-cli切换到客户端一、redis的数据类型1.String(字符串)最基本的数据结构,可以......
  • redis做消息队列学习
    转自:https://juejin.cn/post/7094272373930590245#heading-9,https://zhuanlan.zhihu.com/p/3442697371、消息队列基本作用:应用解耦(作为中介)、削峰填谷。redis做mq的优点:轻量级,使用和运维成本低。mq的3个基本要求:消息保序sequence:对应消息需要有序消费的场景;处理重复消息dupl......
  • Java面试题 P17:Redis篇:Redis使用场景-缓存-缓存穿透
    什么是缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把数据库压垮。  互斥锁代码:1privatefinalReadWriteLockreadWriteLock=newReentrantReadWriteLock();2privatefinalLock......