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. Building Applications with Force.com and VisualForce(六):Designing Applications for Multiple users: Accommodating Multiple Users in your App

    Dev 401-006 Designing Applications for Multiple users: Accommodating Multiple Users in your App. Cou ...

  2. 莎士比亚电路ヾ(≧▽≦*)o

    偶尔记录一件有趣的事儿! 这个电路叫做 "莎士比亚电路"[1],请自行参悟,ヾ(≧▽≦)o,ヾ(≧▽≦)o,ヾ(≧▽≦*)o ヾ(≧▽≦*)o . <穿越计算机的迷雾> ...

  3. liunx 上安装redis

    目录 1.安装包 2.解压:tar xzf redis-5.0.5.tar.gz 3.安装 4.编辑redis.conf文件 5.配置密码 6.启动配置: 7.配置公网链接 8.杀掉redis进程 9 ...

  4. Input标签中属性的注意点

    readonly 只读字段,即用户不可更改,但可以通过tab切换到该字段,还可以选中复制该字段 step 输入合法的数字间隔,当step属性的值为负数或0时默认为1,可以配合max,min属性来创建合 ...

  5. [vijos1159&洛谷1494]岳麓山上打水<迭代深搜>

    题目链接:https://vijos.org/p/1159 https://www.luogu.org/problem/show?pid=1494 这是今天的第三道迭代深搜的题,虽然都是迭代深搜的模板 ...

  6. MySQL从库实用技能(一)--巧用slave_exec_mode参数

    想必从库异常中断的情况不在少数,其中报错信息中1032及1062的错误占了不少的比重 错误1032指的是从库中找不到对应行的记录 错误1062指的是主键冲突 遇到此报错时,大多DBA会使用如下方法进行 ...

  7. sql server 表连接类型

    一.数据库访问操作 1.SCAN(最影响性能点,优化切入点) 根据表的不同,分为Table Scan,Cluster Index Scan,Non-clustered Index Scan Table ...

  8. VAuditDemo代码审计

    简介 先提一嘴,代码审计流程大概可以归结为:把握大局,定向功能,敏感函数参数回溯. 本文也是按照此思路进行,还在最后增加了漏洞修补方法. 本人平时打打CTF也有接触过代码审计,但都是零零散散的知识点. ...

  9. linux中忘记了mysql的root用户的密码怎么办?

    1.vim /etc/my.cnf skip-grant-tables  #取消此行的注释 2.重启mysql systemctl restart mysqld 3.mysql 登陆mysql mys ...

  10. C语言 刷新缓冲区

    fflush int fflush(FILE* stream); 用于清空文件缓冲区,如果文件是以写的方式打开 的,则把缓冲区内容写入文件. eg: 1. #include <stdio.h&g ...