redis: 主从复制和哨兵模式(十三)
redis 主从复制
最低要求是一主二从(一个主机和两个从机)
主机才能写 从机只能读
只要从机连接到主机 数据就会全量复制到从机
环境配置(同一台机器)
1:配置文件

redis.conf配置如下:
port 6379
pidfile /var/run/redis_6379.pid
logfile "6379.log"
dbfilename dump6379.rdb
redis01.conf配置如下:
port 6380
pidfile /var/run/redis_6380.pid
logfile "6380.log"
dbfilename dump6380.rdb
replicaof 127.0.0.1 6379 #配置自己的主机
redis02.conf配置如下:
port 6381
pidfile /var/run/redis_6381.pid
logfile "6381.log"
dbfilename dump6381.rdb
replicaof 127.0.0.1 6379 #配置自己的主机
2:启动三个redis服务
[root@ruiyiserver bin]# redis-server redis-config/redis.conf
[root@ruiyiserver bin]# redis-server redis-config/redis01.conf
[root@ruiyiserver bin]# redis-server redis-config/redis02.conf
3:测试三个服务是否正常
[root@ruiyiserver bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
[root@ruiyiserver bin]# redis-cli -p 6380
127.0.0.1:6380> ping
PONG
[root@ruiyiserver bin]# redis-cli -p 6381
127.0.0.1:6381> ping
PONG
4:查看节点信息 info replication
6379:(主)
role:master #主机
connected_slaves:2 #从机数量
slave0:ip=127.0.0.1,port=6380,state=online,offset=56,lag=0
slave1:ip=127.0.0.1,port=6381,state=online,offset=56,lag=1
master_replid:1df77e446ddea2a4f61046e251a42c66f8d35175
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:56
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:56
6380:
127.0.0.1:6380> info replication
# Replication
role:slave #从机角色
master_host:127.0.0.1 #自己的主机信息
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:98
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:1df77e446ddea2a4f61046e251a42c66f8d35175
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98
6381:
127.0.0.1:6381> info replication
# Replication
role:slave #从机角色
master_host:127.0.0.1 #自己的主机信息
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:126
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:1df77e446ddea2a4f61046e251a42c66f8d35175
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:126
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:126
redis 哨兵模式
哨兵模式基于主从复制!
环境配置(同一台机器)
1:配置文件

sentinel01.conf
# 端口
port 26379
# 是否后台启动
daemonize yes
# pid文件路径
pidfile /var/run/redis-sentinel01.pid
# 日志文件路径
logfile "/var/log/sentinel01.log"
# 定义工作目录
dir /tmp
# 定义Redis主的别名, IP, 端口,这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为
sentinel monitor mymaster 127.0.0.1 6379 2
# 如果mymaster 30秒内没有响应,则认为其主观失效
sentinel down-after-milliseconds mymaster 30000
# 如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人>在访问这些slave,可能造成读取失败,影响面会更广。最保守的设置为1,同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步>的进程将变慢。
sentinel parallel-syncs mymaster 1
# 该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒
sentinel failover-timeout mymaster 180000
# 不允许使用SENTINEL SET设置notification-script和client-reconfig-script。
sentinel deny-scripts-reconfig yes
sentinel02.conf
# 端口
port 26380
# 是否后台启动
daemonize yes
# pid文件路径
pidfile /var/run/redis-sentinel02.pid
# 日志文件路径
logfile "/var/log/sentinel02.log"
# 定义工作目录
dir /tmp
# 定义Redis主的别名, IP, 端口,这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为
sentinel monitor mymaster 127.0.0.1 6379 2
# 如果mymaster 30秒内没有响应,则认为其主观失效
sentinel down-after-milliseconds mymaster 30000
# 如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人>在访问这些slave,可能造成读取失败,影响面会更广。最保守的设置为1,同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步>的进程将变慢。
sentinel parallel-syncs mymaster 1
# 该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒
sentinel failover-timeout mymaster 180000
# 不允许使用SENTINEL SET设置notification-script和client-reconfig-script。
sentinel deny-scripts-reconfig yes
sentinel03.conf
# 端口
port 26381
# 是否后台启动
daemonize yes
# pid文件路径
pidfile /var/run/redis-sentinel03.pid
# 日志文件路径
logfile "/var/log/sentinel03.log"
# 定义工作目录
dir /tmp
# 定义Redis主的别名, IP, 端口,这里的2指的是需要至少2个Sentinel认为主Redis挂了才最终会采取下一步行为
sentinel monitor mymaster 127.0.0.1 6379 2
# 如果mymaster 30秒内没有响应,则认为其主观失效
sentinel down-after-milliseconds mymaster 30000
# 如果master重新选出来后,其它slave节点能同时并行从新master同步数据的台数有多少个,显然该值越大,所有slave节点完成同步切换的整体速度越快,但如果此时正好有人>在访问这些slave,可能造成读取失败,影响面会更广。最保守的设置为1,同一时间,只能有一台干这件事,这样其它slave还能继续服务,但是所有slave全部完成缓存更新同步>的进程将变慢。
sentinel parallel-syncs mymaster 1
# 该参数指定一个时间段,在该时间段内没有实现故障转移成功,则会再一次发起故障转移的操作,单位毫秒
sentinel failover-timeout mymaster 180000
# 不允许使用SENTINEL SET设置notification-script和client-reconfig-script。
sentinel deny-scripts-reconfig yes
3:启动三个哨兵服务
[root@ruiyiserver bin]# redis-sentinel redis-config/sentinel01.conf
[root@ruiyiserver bin]# redis-sentinel redis-config/sentinel02.conf
[root@ruiyiserver bin]# redis-sentinel redis-config/sentinel03.conf
[root@ruiyiserver bin]# ps -ef | grep redis
root 13129 1 0 20:28 ? 00:00:03 redis-server 127.0.0.1:6379
root 13136 1 0 20:28 ? 00:00:02 redis-server 127.0.0.1:6380
root 13144 1 0 20:28 ? 00:00:02 redis-server 127.0.0.1:6381
root 13178 13159 0 20:29 pts/1 00:00:00 redis-cli -p 6379
root 13203 13185 0 20:29 pts/2 00:00:00 redis-cli -p 6380
root 13226 13208 0 20:29 pts/3 00:00:00 redis-cli -p 6381
root 14056 1 0 21:18 ? 00:00:00 redis-sentinel *:26379 [sentinel]
root 14065 1 0 21:18 ? 00:00:00 redis-sentinel *:26380 [sentinel]
root 14070 1 0 21:18 ? 00:00:00 redis-sentinel *:26381 [sentinel]
4:断开主机连接并且等待30秒
127.0.0.1:6379> SHUTDOWN
not connected> exit
5:查看两个从机的状态
6380:已变成主机
127.0.0.1:6380> info replication
# Replication
role:master #主机
connected_slaves:1 #从机数量
slave0:ip=127.0.0.1,port=6381,state=online,offset=25134,lag=0
master_replid:578fca51bbadf225cfa32d03b0dec23543a60bea
master_replid2:1df77e446ddea2a4f61046e251a42c66f8d35175
master_repl_offset:25134
second_repl_offset:22837
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:25134
6381:还是从机
127.0.0.1:6381> info replication
# Replication
role:slave #从机
master_host:127.0.0.1
master_port:6380 #自己的主机信息
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:44027
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:578fca51bbadf225cfa32d03b0dec23543a60bea
master_replid2:1df77e446ddea2a4f61046e251a42c66f8d35175
master_repl_offset:44027
second_repl_offset:22837
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:44027
6:恢复6379 并查看状态
6379:已变成从机
127.0.0.1:6379> info replication
# Replication
role:slave #从机
master_host:127.0.0.1
master_port:6380 #自己的主机信息
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:0
master_link_down_since_seconds:1586438664
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:bfa848ba383079c3912623b4dae24bd10dc5658f
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
redis: 主从复制和哨兵模式(十三)的更多相关文章
- Linux基于Docker的Redis主从复制、哨兵模式搭建
本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...
- Redis——(主从复制、哨兵模式、集群)的部署及搭建
Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...
- Redis主从复制、哨兵模式
1.部署主从 环境:主IP:10.0.0.15,端口6379;从IP:10.0.0.16,端口6379. 原理:基于RDB持久化的功能来实现主从复制的功能. a.linux-redis1(10.0.0 ...
- redis学习三,Redis主从复制和哨兵模式
Redis主从复制 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 1.Master可以拥有多个slave 2.多个slave可以连接同一个Master外,还可以连接到其他的slav ...
- Redis主从复制配置+哨兵模式
架构设计: master:s0 slave:s1.s2 主机映射信息如下: 192.168.32.100 s0 192.168.32.101 s1 192.168.32.102 s2 1.安装Redi ...
- redis 主从复制和哨兵模式(二)
Redis 主从复制 为了分担单机 redis 的数据服务压力,需要进行读写分离,所以搭建 redis 的主从结构,主节点负责写,从节点负责读,主节点定期把数据同步到从节点. 配置主从 # 配置文件中 ...
- Redis主从复制之哨兵模式(sentinel)
介绍:反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库 调整结构:6379带着80.81 自定义的/myredis目录下新建sentinel.conf文件,名字绝不 ...
- redis的主从复制和哨兵模式
Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...
- redis主从复制和哨兵机制
redis主从复制和哨兵机制 技术标签: redis 1.redis主从复制(master/slave模式) 主数据库可以进行读写操作,当写操作导致数据发生变化时会自动将数据同步给从数据库.而一般情况 ...
随机推荐
- w3cshool -- 排列组合去重算法挑战
function permAlone(str) { if(str.length == 1) return str; var a = str.substr(0, 1), one = [a], count ...
- IOS 空字符串报错 解决办法
NSScanner: nil string argument NSScanner: nil string argument libc++abi.dylib: terminate_handler un ...
- 记录---java中jsp页面引入jquery路径的问题
今天在jsp页面中引入jquery的时候因为路径不对总是报404,网上的方法找到几种试了试但是最后结果还是不生效,遂想起原先的项目中有引入外部jquery的例子,所以立马看了看,发现当时的项目中是用$ ...
- 【每周小项目】使用 puppeteer 插件爬取动态网站
目录 0. 前言 问题 解决 1. 下载与引包 2. 使用步骤 3. 爬过的几个坑 page.evaluate 的传参问题 元素操作问题 0. 前言 这两天对爬虫开始感兴趣,最开始是源于天涯的一个房价 ...
- jdk1.8练习201909200843By:镜花水月(月神)
package org.jimmy.test2019091701; import java.util.Arrays; import java.util.List; import java.util.S ...
- 【Redis】集群教程(Windows)
概述 Redis集群数据分片 Redis集群节点通讯 环境准备 搭建Redis集群 测试Redis集群 概述 Redis Cluster provides a way to run a Redis i ...
- P - Sudoku Killer HDU - 1426(dfs + map统计数据)
P - Sudoku Killer HDU - 1426 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为 ...
- Boxes Packing
Boxes Packing Mishka has got n empty boxes. For every i (1 ≤ i ≤ n), i-th box is a cube with side le ...
- c期末笔记(1)
运算符 1.i++与++i的细微区别 i++与++i 和i++放在一个语句中,则i原本的值先被利用.语句结束后,i的值加一. i的原始值失效,直接加一. 2.int加法 整形数据(int)加上任何类型 ...
- 原地算法(in-place algorithm)
原地算法(in-place algorithm) 在计算机科学中,一个原地算法(in-place algorithm)基本上不需要额外辅助的数据结构,然而,允许少量额外的辅助变量来转换数据的算法.当算 ...