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: 主从复制和哨兵模式(十三)的更多相关文章

  1. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  2. Redis——(主从复制、哨兵模式、集群)的部署及搭建

    Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...

  3. Redis主从复制、哨兵模式

    1.部署主从 环境:主IP:10.0.0.15,端口6379;从IP:10.0.0.16,端口6379. 原理:基于RDB持久化的功能来实现主从复制的功能. a.linux-redis1(10.0.0 ...

  4. redis学习三,Redis主从复制和哨兵模式

    Redis主从复制 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 1.Master可以拥有多个slave 2.多个slave可以连接同一个Master外,还可以连接到其他的slav ...

  5. Redis主从复制配置+哨兵模式

    架构设计: master:s0 slave:s1.s2 主机映射信息如下: 192.168.32.100 s0 192.168.32.101 s1 192.168.32.102 s2 1.安装Redi ...

  6. redis 主从复制和哨兵模式(二)

    Redis 主从复制 为了分担单机 redis 的数据服务压力,需要进行读写分离,所以搭建 redis 的主从结构,主节点负责写,从节点负责读,主节点定期把数据同步到从节点. 配置主从 # 配置文件中 ...

  7. Redis主从复制之哨兵模式(sentinel)

    介绍:反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库 调整结构:6379带着80.81 自定义的/myredis目录下新建sentinel.conf文件,名字绝不 ...

  8. redis的主从复制和哨兵模式

    Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...

  9. redis主从复制和哨兵机制

    redis主从复制和哨兵机制 技术标签: redis 1.redis主从复制(master/slave模式) 主数据库可以进行读写操作,当写操作导致数据发生变化时会自动将数据同步给从数据库.而一般情况 ...

随机推荐

  1. STM32CubeMx——串口收发

    生成代码 1.配置串口1 2.选择模式 3.开中断 4.其他的RCC.调试都一样,弄完直接生成代码. 串口发送 1.定义一个用来测试的数组并初始化 /* USER CODE BEGIN 0 */ ui ...

  2. SVM多核学习方法简介

    作者:Walker SVM是机器学习有监督学习的一种方法,常用于解决分类问题,其基本原理是:在特征空间里寻找一个超平面,以最小的错分率把正负样本分开.因为SVM既能达到工业界的要求,机器学习研究者又能 ...

  3. Spark使用jdbc时的并行度

    Spark SQL支持数据源使用JDBC从其他数据库读取数据. 与使用JdbcRDD相比,应优先使用此功能. 这是因为结果以DataFrame的形式返回,并且可以轻松地在Spark SQL中进行处理或 ...

  4. Flutter Weekly Issue 49

    插件/Librarys flutter_date_pickers Allows to use date pickers without dialog. Provides some customizab ...

  5. Jmeter4.0之插件安装(三)

    使用Jmeter的实际过程中,需要使用到很多插件,比如json的插件,还有就是做websocket接口测试的时候需要下载websocket的插件 到https://jmeter-plugins.org ...

  6. Java 异常处理与输入输出

    一.异常 1.1 package exception; import java.util.Scanner; public class ArrayIndex { public static void m ...

  7. JS函数详解

    什么是函数呢? 对于JS来说,我们可以把函数理解为任意一段代码放在一个盒子里,在我们想要让这段代码执行的时候,直接执行这个盒子里的代码就行.专业一点来讲:js函数就是由事件驱动的可执行课重复只用的代码 ...

  8. 版本控制git的简单使用

    0.第一次使用时配置: git config --global user.name "your_name" git config --global user.email " ...

  9. XSS编码问题的个人总结

    XSS也太太太难了,主要也是因为自己没花时间集中. 文章脉络:根据我粗浅的理解,从开始学习XSS到现在,从一开始的见框就插到现在去学构造.编码,首先需要的是能看懂一些payload,然后再去深入理解. ...

  10. Node.js快速创建一个Express应用的几个步骤

    Node.js 的 Express 框架学习 转载和参考地址: https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/Express_N ...