Redis的复制(Master/Slave)

一、概述

Replication
Redis replication is a very simple to use and configure master-slave replication that allows slave Redis servers to be exact copies of master servers.

主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

Redis 缓存挂掉之后数据库的压力更大,访问量剧增所以做主从复制和读写分离

使用意图:读写分离 容灾恢复

二、主从配置

1、配从(库)不配主(库)

每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
Info replication   查看启动服务的信息

2、从库配置:slaveof 主库IP 主库端口

3、修改配置文件细节位置

① 拷贝多个redis.conf文件

② 开启redis.conf 中的 daemonize yes

③ Pid文件名字

④ 指定端口

⑤ Log文件名字

⑥ Dump.rdb名字

4、复制原理

Slave启动成功连接到master后会发送一个sync命令

Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步

全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步

但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

5、哨兵模式(sentinel)

1) 反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

2) 使用步骤

① 调整结构,6379带着80、81

② /usr/common目录下新建sentinel.conf文件,名字绝不能错

③ 配置哨兵: sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1

上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

④ 启动哨兵  
    Redis-sentinel /usr/common/sentinel.conf 

3) 一组sentinel能同时监控多个Master

6、复制的弊端

复制延时

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

三、主从演示

1、配置三个 redis 服务 (即拷贝3个 redis.conf 配置文件)

在 /usr/local/redis/ 目录(看自己的安装目录)

主: redis6379.conf  

从: redis6380.conf

从: redis6381.conf

这里写图片描述

2、修改以上三个配置文件

daemonize yes

# When running daemonized, Redis writes a pid file in /var/run/redis.pid by
# default. You can specify a custom pid file location here.
pidfile "/var/run/redis6380.pid"

# Accept connections on the specified port, default is 6379.
# If port 0 is specified Redis will not listen on a TCP socket.
port 6380

# output for logging but daemonize, logs will be sent to /dev/null
logfile "6380.log"

# The filename where to dump the DB
dbfilename "dump6380.rdb"

以上示例是 端口号为 6380 的redis 服务配置,6379 和 6381 同样修改上述部分

3、开启三个 redis 服务及进入客户端

端口为 6379 服务

[root@bogon bin]# pwd
/usr/local/bin
[root@bogon bin]# redis-server  /usr/local/redis/redis.conf 
[root@bogon bin]# redis-cli  -p 6379
127.0.0.1:6379> 

端口为 6380 服务

[root@bogon bin]# pwd
/usr/local/bin
[root@bogon bin]# redis-server  /usr/local/redis/redis6380.conf 
[root@bogon bin]# redis-cli  -p 6380
127.0.0.1:6380> 

端口为 6381 服务

[root@bogon bin]# pwd
/usr/local/bin
[root@bogon bin]# redis-server  /usr/local/redis/redis6381.conf
[root@bogon bin]# redis-cli  -p 6381
127.0.0.1:6381> 

4、配置主从服务

127.0.0.1:6380> info replication  查看服务信息

注意:配主不配从

6380 配为 6379 的从服务:

这里写图片描述

6381 配从 6379 的服务:

这里写图片描述

6379 主服务的信息

这里写图片描述

注意:
① 从机值允许读

② 从机挂掉之后,需要手动的配置一下(推荐),除非在配置文件中配置主机一挂掉马上重新配置(不推荐)

这里写图片描述

③ 真是的生产环境中一主一从够用

5、改变从机对应的主机

6381 改变主为6380

这里写图片描述

虽然6380 有了从机但是信息任然显示为从机

这里写图片描述

6、反客为主

当6379 主机挂掉之后,手动设置其中一个从机为主机

这里写图片描述

主机再回来之后没有从机

这里写图片描述

7、哨兵模式

1) 配置文件 Sentinel.conf

开启哨兵模式监控

这里写图片描述

投票次数由 2—1 公平竞争,系统自己投票选择

2)启动哨兵服务

这里写图片描述

6379挂掉之后 有以下哨兵检测的信息看出后台投票选择主机 最终决定为6381

这里写图片描述

6379 回来之后不会恢复为之前的master 身份

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值