10步实现Redis主从复制(Redis)
一、Redis实现主从复制概念(了解才能方便实操):主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。主从复制的作用主要包括:数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际
一、Redis实现主从复制
概念(了解才能方便实操):
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。
主从复制的作用主要包括:
数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务,(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写 少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
实操主要概念:
(1)一主二从
(2)只配置从库,不用配置主库
(3)主机负责写,从机负责读(不能写)
10步实现Redis主从复制:
- 首先进入Redis:
- Redis输入:info replication
- 查看返回:# Replication
role:master #目前是master
connected_slaves:0 #目前是从机slaves数量为0 - 复制操作:
- 进入Xftp的myredisconfig文件夹(也可用vim),用记事本可以快速查找修改这三个文件,修改以下5个参数即可:port 6379、daemonize yes、pidfile /var/run/redis_6379.pad、logfile "6379.log"、dbfilename dump6379.rdb。在配置文件的port下添加主机密码以让从机连接时可以访问(否则会显示slaves为0):masterauth 密码
- 开启单机多个窗口,在各自窗口输入命令:[root@litao bin]# redis-server myredisconfig/redis81.conf
- 查看进程:[root@litao bin]# ps -ef|grep redis 。返回说明三个redis服务已经启动:
- 在各自窗口输入命令:[root@litao bin]# redis-cli -p 6379
- 默认情况下每台机都是主机,那么自设6380、6381两个为从机salves,在这两台机上输入redis命令将6379端口作为主机:SLAVEOF 127.0.0.1 6379 。在主机输入命令查看是否连接成功:info replication,查看返回:
role:master #目前是master
connected_slaves:2 #目前是从机slave数量为2 - 以上便是(命令行)一主多从的暂时性配置,重启就会变成主机,只能再次设置命令行成为主机,这时会自动进行全量复制/增量复制。若想永久配置,则需要在配置文件中修改。
- -------------------永久配置主从复制-------------
- 打开配置文件,将这两个参数写好即可:
- --------------全量复制和增量复制---------
- 全量复制:第一次成为salve或重新成为salve,会进行一次全量复制数据。
1)主节点收到全量复制的命令后,执行bgsave,在后台生成RDB文件,并使用一个复制缓冲区记录从现在开始执行的所有写命令(防止rdb后的数据丢失)
2)主节点的bgsave执行完成后,将RDB文件发送给从节点;从节点首先清除自己的旧数据,然后载入接收的RDB文件,将数据库状态更新至主节点执行bgsave时的数据库状态
3)主节点将前述复制缓冲区中的所有写命令发送给从节点,从节点执行这些写命令,将数据库状态更新至主节点的最新状态
- 增量复制:后续的salve都是通过增量复制来同步master的数据
- -------------让从节点再次变成主节点---------
- 通过命令:saveof no one
- ***--------------多哨兵模式-----------****
-
概念:在复制的基础上,哨兵实现了自动化的故障恢复,为Redis提供一个高可靠解决方案,对一定程序上的错误,可以不需要人工干预自行解决。
1、监控:哨兵会不断地检查主节点和从节点是否运作正常。
2、自动故障转移:当主节点不能正常工作时,被视为主观下线,多哨兵会通过投票视作可观下线,开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点成为主节点
3、配置提供者:客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。
4、通知:哨兵可以将故障转移的结果发送给客户端
-
实操:在配置文件目录下,创建一个文件sentinel.config,在文件内输入:sentinel monitor 自取被监控redis名称myredis79 host 目标port 1(这里的1是指只要有1个哨兵认为主服务器已经下线,主服务器就会被判定为客观下线)。还有目标主机的密码:sentinel auth-pass myredis79 密码
-
输入命令启动哨兵:redis-sentinel myredisconfig/sentinel.conf
-
此时关掉6379的redis,查看哨兵日志和其它redis目前状态info replicatiot:
-
若这时候6379再次上线,只能成为salve:
更多推荐
所有评论(0)