首页 > 数据库 >redis-哨兵

redis-哨兵

时间:2023-04-23 18:22:42浏览次数:45  
标签:mymaster 0.0 redis 哨兵 6379 conf sentinel

1.哨兵高可用

主从存在的问题:
主从复制,主节点发生鼓掌,可以手动转移,让其中一个slave变成master,这就是哨兵
主从复制,只能是主来写数据,所以写的能力和存储能力有限,需要做集群
哨兵:sentinel
哨兵就是一个redis进程

哨兵的工作原理:
1.多个sentinel发现并确认master有问题
2.选取出一个sentinel作为领导
3.选取一个slave作为新的master
4.通知其余slave成为新的master的salve
5.通知客户端主从变化
6.等待老的master复活成为新的master的slave

先搭建一主两从:
1.现将6379端口的配置文件复制一份到redis_6390.conf:

cp redis_6379.conf redis_6390.conf

2.配置从

daemonize yes
port 6390
dir "/root/redis-6.2.9/data2"
logfile "6390.log"

appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
aof-use-rdb-preamble yes

slaveof 127.0.0.1 6379
slave-read-only yes

3.需要在redis目录下新建data2目录:

mkdir data2

4.然后我们启动从:

./src/redis-server ./redis_6381.conf &

5.再启动主:

./src/redis-server ./redis_6379.conf &

6.连接客户端:

# -p是指端口,不写默认连接6379
./src/redis-cli -p 6381

7.连接6379的服务端:

./src/redis-cli
info  # info查看服务端信息

image
image

1.redis操作哨兵

高可用架构后,不能直接连接某一个主库了,因为主库可能会挂掉,后来它就不是主库了
之前的链接redis的操作(不能用了):

import redis
conn=redis.Redis(host='',port=6379)
conn.set()
conn.close()

新的连接哨兵的操作:
1.搭建哨兵:

vim sentinel_26379.conf  # 配置26380,26381时将数字改掉

2.配置哨兵,配置三个端口的哨兵,分别是26379,26380,26381:

port 26379
daemonize yes
dir data
protected-mode no
bind 0.0.0.0
logfile "redis_sentinel.log"
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

image
哨兵26380:

port 26380
daemonize yes
dir data
protected-mode no
bind 0.0.0.0
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

哨兵26381:

port 26381
daemonize yes
dir data
protected-mode no
bind 0.0.0.0
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

image
3.配置一主两从:
首先配置主库:
vim redis_6379.conf

daemonize no
bind 0.0.0.0
protected-mode no
port 6379
timeout 0
dir /data

配置从库6380:
vim redis_6380.conf

daemonize no
bind 0.0.0.0
protected-mode no
port 6380
timeout 0
dir /data

slaveof 127.0.0.1 6379  # 是6379的从库
slave-read-only yes

配置从库6381:

daemonize no
bind 0.0.0.0
protected-mode no
port 6381
timeout 0
dir /data

slaveof 127.0.0.1 6379
slave-read-only yes

image
4.在redis根路径创建 data目录

mkdir /data

5.启动三个:

./src/redis-server ./redis_6379.conf &  # 加&表示在后台运行
#  如果提示端口被占用,先用kill -9停止进程
./src/redis-server ./redis_6380.conf &
./src/redis-server ./redis_6381.conf &

image
6.查看进程:

ps aux |grep redis

image
7.连接主库6379,设置name:

./src/redis-cli -p 6379
set name max

8.退出,连接从库,查看name,发现有值:

exit
./src/redis-cli -p 6380
get name  # max

标签:mymaster,0.0,redis,哨兵,6379,conf,sentinel
From: https://www.cnblogs.com/ERROR404Notfound/p/17347370.html

相关文章

  • 《Redis设计与实现》读书笔记
    《Redis设计与实现》读书笔记简单动态字符串SDS的定义结构:buf数组:用于保存字符串len属性:记录SDS中保存字符串的长度free属性:记录buf中未使用字节数量遵循C字符串以空字符串结尾的惯例,保存空字符串的字节不计入长度SDS与C字符串的区别常数复杂度获取字符串长度因为SDS中......
  • Ubuntu安装Redis7
    去官网下载Redis最新安装包(sudoapt-getremoveredis-server)此命令可以卸载通过apt安装的redisRedis官网地址:Redis      debhttp://archive.ubuntu.com/ubuntu/trustymainuniverserestrictedmultiverse   步骤四打开服务:serviceredisdst......
  • Go--连接redis
    直接看代码packagemainimport("errors""fmt""github.com/go-redis/redis""time")//先下载三方依赖包,以下两个都可以,这里使用的是第一个//goget-ugithub.com/go-redis/redis//goget-ugithub.com/garyburd/redigo/redisfun......
  • redis linux下安装 redis启动方式 redis典型场景 redis通用命令 数据结构和内部编码 r
    内容回顾#dockerfile命令 RUNCOPYADDENVEXPOSEWORKDIRCMD:可以用新命令覆盖的ENTRYPOINT:不可以被覆盖#容器要运行,必须有个前台进程#dockerfile部署图书管理系统项目 FROMpython:3.8MAINTAINERlqzWORKDIR/soft......
  • redis,持久化RDB,AOF,混合(AOF),主从复制原理和方案,哨兵高可用
    内容回顾#悲观乐观锁: django中如何实现 -悲观锁:mysql行锁表锁-乐观锁:真正修改时,加入限制条件django中事务如何开启 -原生sql如何开启事务:begin;commit; -django中如何开事务:atomic()commit()for_update是锁表还是锁行如果查......
  • 1 python操作哨兵 、2 python操作集群、3 缓存优化、4 mysql 主从 、5 django使用多数
    目录1python操作哨兵2python操作集群3缓存优化3.1redis缓存更新策略3.2缓存击穿,雪崩,穿透4mysql主从5django使用多数据库做读写分离1python操作哨兵#高可用架构后---》不能直接连某一个主库了---》主库可能会挂掉,后来它就不是主库了#之前学的连接redis的操作,就用不......
  • 使用pipeline执行命令遇到redis.Nil的坑
    参考项目kratos_rockscacheredis数据准备关键代码特别注意,使用pipeline的Exec方法,一定要判断一下redis.Nil这个错误:~~~......
  • redis高级-day6——python操作哨兵、python操作集群、缓存优化
    目录一、python操作哨兵二、python操作集群三、缓存优化3.1redis缓存更新策略3.2缓存击穿,雪崩,穿透一、python操作哨兵#高可用架构后---》不能直接连某一个主库了---》主库可能会挂掉,后来它就不是主库了#之前学的连接redis的操作,就用不了了importredisconn=redis.Red......
  • 详解Redis三大集群模式,轻松实现高可用!
    1.Redis集群简介1.1什么是Redis集群Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,Redis集群主要有三种模式:主从复制模式(Master-Slave)、哨......
  • Redis、Memcached、Guava、Ehcache中的算法
    1.LRU简单粗暴的Redis今天看 Redis3.0的发行通告里说,LRU算法大幅提升了,就翻开源码来八卦一下,结果哭笑不得,这旧版的"近似LRU"算法,实在太简单,太偷懒,太Redis了。在 Github的Redis项目里搜索lru,找到代码在redis.c的freeMemoryIfNeeded()函数里。先看 2.6版的代码:竟然就是随机找三......