Redis主从复制

redis的主从复制:linux

主节点对内存数据直接进行一次快照,并将快照文件发给从节点,从节点在本机的内存空间重构数据库,完成复制,主节点的数据就会同步到从节点上redis

特色:
            一个Master能够有多个slave主机,支持链式复制;
            Master以非阻塞方式同步数据至slave主机;数据库


实验说明:vim

本实验使用三台设备,一主二从,经过修改配置文件和在命令行操做两种方式完成从节点的配置
centos

一、安装redis软件包、启动服务、同时同步时间bash

yum -y install redis
systemctl  start redis.service 
ntpdate 172.18.0.1

二、主节点配置less

主节点开启认证功能、指定监听地址,不用作其余的操做ide

vim /etc/redis.conf
requirepass centos
bind 0.0.0.0   #本实验环境就监听全部地址,实际场景中应该是监听提供服务的ip


三、从节点A上的配置(修改配置文件的方式)ui

修改监听地址、auth认证命令行

vim /etc/redis.conf
requirepass centos
bind 0.0.0.0

关联的主节点信息

slaveof 192.168.1.101 6379   #主节点的地址和端口
masterauth centos     #主节点配置的认证口令
#从节点只需配置这些,很简单

而后启动redis服务,在本机检查结果

redis-cli  -h 192.168.1.106    #从节点链接本机redis服务
AUTH centos   #只有本机经过认证才能执行后面的操做
192.168.1.106:6379[15]> INFO Replication   #查看从主节点同步过来的信息
# Replication
role:slave   #当前角色是slave
master_host:192.168.1.101   #主节点地址
master_port:6379   #端口
master_link_status:up   #与主节点的链路状态是up的
master_last_io_seconds_ago:1  
master_sync_in_progress:0
slave_repl_offset:603
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

四、在主节点上检查

redis-cli  -h 192.168.1.101   
192.168.1.101:6379> CLIENT LIST
id=3 
addr=192.168.1.106:39661 fd=5 name= age=344 idle=0 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=replconf
或者
192.168.1.101:6379> INFO Replication
# Replication
role:master   #当前是主节点
connected_slaves:1
slave0:ip=192.168.1.106,port=6379,state=online,offset=505,lag=0
master_repl_offset:505
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:504

五、从节点B上的配置(命令行方式)

redis-cli  -h 192.168.1.107
192.168.1.107:6379> AUTH centos
OK

192.168.1.107:6379> slaveof 192.168.1.101 6379 
192.168.1.107:6379> CONFIG SET masterauth centos
#这两条与从节点A在配置文件中修改的内容是同样的

192.168.1.107:6379> SELECT 15
OK
192.168.1.107:6379[15]> GET key1
"hello redis,hello linux"
#在主节点已经提早建立一些数据,因此在从节点可以同步过来
192.168.1.107:6379[15]> INFO Replication
# Replication
role:slave   #当前状态是从节点
master_host:192.168.1.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:3543
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.1.107:6379[15]> CONFIG GET slave-read-only   #从节点只读功能,默认便是开启的
1) "slave-read-only"
2) "yes"
192.168.1.107:6379[15]> CONFIG REWRITE
OK
#将配置写入配置文件中
tail /etc/redis.conf
#此时可以看到命令行的信息已经写入到了配置文件中

在主节点上虽然配置的字段很少可是仍是有不少选项须要咱们注意:

repl-diskless-sync no   #不设定无磁盘的同步,即没必要等待全部从节点请求到达再一次性完成复制,而是来几个从节点完成几回复制
repl-diskless-sync-delay 5 #无磁盘同步的延迟时间
repl-ping-slave-period 10  #每隔多长时间去探测slave节点是否存活,单位是秒
repl-timeout 60  #复制的超时时间

从节点配置须要注意一点

slave-priority 100   #当主节点故障,多个从节点依据此优先级抢占主节点位置,默认值是100,值越小越优先,0表示不参见抢占
slave-read-only yes   #从节点只读功能便可


总结:

redis的主从复制配置起来很是简单,主节点只需开启服务、认证和bind地址

从节点不管在配置文件仍是命令行关键就是完成指定主节点地址和端口以及认证口令的配置,能够说两条语句搞定。只是cli模式下要重写入配置文件而已


至此,redis的主从复制实验结束,比MySQL的主从复制简单多了

相关文章
相关标签/搜索