Redis(五)【主从复制】
通过持久化功能,Redis 保证了即使在服务器重启的情况下也不会丢失(或少量丢失) 数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现故障,如硬盘坏了,也会导致数据丢失。
为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台 服务器出现故障其他服务器依然可以继续提供服务。
Redis 的主从复制就可以实现当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器上。
Redis 提供了复制(replication)功能来自动实现多台 redis 服务器的数据同步。
通过部署多台 Redis,并在配置文件中指定这几台redis之间的主从关系,主负责写入数据,同时把写入的数据实时同步到从机器,这种模式叫做主从复制,即 master/slave。
Redis默认master用于写,slave 用于读,向 slave 写数据会导致错误 。
Redis主从复制实现:
1)新建三个Redis的配置文件,将原有的redis.conf拷贝三份,并将拷贝后的配置文件命名加上新的端口号,以便区分
2)编辑Master配置文件,在空文件加入如下内容:
include /usr/local/redis-4.0.13/redis.conf (包含原来的配置文件内容,按照自己的目录设置)
daemonize yes (后台启动应用,相当于 ./redis-server & 的作用)
port 6380 (自定义的端口号)
pidfile /var/run/redis_6380.pid ( 自定义的文件,表示当前程序的 pid ,进程 id)
logfile 6380.log (日志文件名)
dbfilename dump6380.rdb (持久化的 rdb 文件名)
3)编辑Slave配置文件,在空文件中加入以下内容:
include /usr/local/redis-4.0.13/redis.conf
daemonize yes
port 6382
pidfile /var/run/redis_6382.pid l
ogfile 6382.log
dbfilename dump6382.rdb
slaveof 127.0.0.1 6380 (表示当前 Redis 是谁的从)
还可以继续添加多个不同端口号的Slave配置文件
4)启动服务器 Master/Slave都启动,并查看启动进程是否有多个

5)查看配置后的服务信息
5.1) Redis客户端使用指定端口连接Redis服务器 ./redis-cli -p 端口

5.2)在客户端的Redis内执行命令info replication(查看Redis服务器所处角色 )

5.3)切换到Slave端口同样查看信息

6)向Master写数据,向Slave读数据
容灾处理:当Master服务器出现故障,需手动将Slave中的一个提升为Master,剩下的Slave挂至新的Master上
容灾处理命令:
1)slaveof no one:将一台Slave服务器提升为Master
2)slaveof 127.0.0.1 6382(刚提升为Master的服务器地址和端口号)
3)故障的服务器修复好以后,需要重新挂到现有的Master上:slaveof 127.0.0.1 6382
注意:
1)一个master可以有多个slave
2)slave下线,读请求的处理性能会下降
3)master下线,写请求无法执行
4)当master发生故障,需手动将其中一台slave使用slaveof no one命令提升为master,其它slave执行slaveof命令指向这个新的master,从新的master处同步数据
5)主从复制模式的故障转移需要手动操作,要实现自动化处理,需要Sentinel哨兵, 实现故障自动转移

浙公网安备 33010602011771号