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. C 2012年笔试题(保)

    1 程序改错 1.1 下面程序段的功能是交换两个字符数组的内容(每个字符串字符数均不超过100)  (8分)   [ 见2012年笔试题1.1] void StrSwap(char *pa,char ...

  2. 使用FME对CAD数据进行过滤、中心点替换转为shapefile

    1.首先加载CAD数据,并暴露出需要使用到的相关字段.比如:block_number.fme_geometry.fme_type等字段. (本次的管网设备由于是一个圆圈里面有三个文字因此将fme_ty ...

  3. [codevs2370]小机房的树<LCA>

    题目链接:http://codevs.cn/problem/2370/ 这题我还是做了比较久了,因为有人告诉我这是用tarjan离线做 好吧算我是蒟蒻,真心不懂tarjan怎么做,最后还是用倍增做的 ...

  4. Ubuntu 18 安装MySQL 5.7

    1.首先把系统换到阿里云的镜像源,需要等待一会 2.系统更新完毕后执行MySQL安装命令:sudo apt install mysql-server 3.查看MySQL服务状态:sudo servic ...

  5. 线程间交换数据的Exchanger

    作者:Steven1997 链接:https://www.jianshu.com/p/9b59829fb191 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. Exc ...

  6. MySql 分组函数

    #二.分组函数/*功能:用作统计使用,又称为聚合函数或统计函数或组函数 分类:sum 求和.avg 平均值.max 最大值 .min 最小值 .count 计算个数 特点:1.sum.avg一般用于处 ...

  7. A - Jessica's Reading Problem POJ - 3320 尺取

    A - Jessica's Reading Problem POJ - 3320 Jessica's a very lovely girl wooed by lots of boys. Recentl ...

  8. async和await是如何实现异步编程?

    目录 异步编程样例 样例解析 浅谈Promise如何实现异步执行 参考 1.异步编程样例 样例: // 等待执行函数 function sleep(timeout) { return new Prom ...

  9. Mybatis中的# 与 $

    我们说MyBatis有两种注入参数的方式, - 一种是#{} - 另一种是${} 这两种从使用功能来看差距不大,那为什么会强推使用#? ${}使用的是拼接字符串,#{}使用的是占位符的方法,经过了处理 ...

  10. C#通用类库整理--字符串处理类

    在程序开发中通常需要将字符串转为自己想要的结果,以下三个类库主要实现: 1.GetStrArray(string str, char speater, bool toLower)  把字符串按照分隔符 ...