1、概述
主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver 机制,Master 以写为主,Slave 以读为主,主从复制节点间数据是全量的。
作用:
2、复制原理
3、哨兵模式
反客为主:当一个 master 宕机后,后面的 slave 可以立刻升为 master,其后面的 slave 不用做任何修改。用 slaveof no one 指令将从机变为主机。而哨兵模式是反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
当主机挂掉,从机选举产生新的主机
4、复制延时
由于所有的写操作都是先在 Master 上操作,然后同步更新到 Slave 上,所以从 Master 同步到 Slave 机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave 机器数量的增加也会使这个问题更加严重。
5、故障恢复
优先级:在 redis.conf 中默认 slave-priority 100,值越小优先级越高。
偏移量:指获得原主机数据最全的概率。
runid:每个 redis 实例启动后都会随机生成一个 40 位的 runid。
6、搭建一主多从
1)创建/myredis文件夹;
2)复制redis.conf配置文件到文件夹中去
cp /usr/local/redis/redis-6.2.0/redis.conf /usr/local/redis/myredis/
3)创建一主两从的三个配置文件并配置(三个配置文件只是端口号不同,分别为6380,6381,6382)
include redis.conf pidfile /var/run/redis_6382.pid port 6382 dbfilename dump6382.rdb
4)启动三个redis服务(命令为:redis-server程序位置 conf文件位置)
/usr/local/redis/redis-6.2.0/src/redis-server /usr/local/redis/myredis/redis6380.conf /usr/local/redis/redis-6.2.0/src/redis-server /usr/local/redis/myredis/redis6381.conf /usr/local/redis/redis-6.2.0/src/redis-server /usr/local/redis/myredis/redis6382.conf
5)连接三个redis服务
/usr/local/redis/redis-6.2.0/src/redis-cli -p 6380 /usr/local/redis/redis-6.2.0/src/redis-cli -p 6381 /usr/local/redis/redis-6.2.0/src/redis-cli -p 6382
6)查看主机运行情况,在redis-cli里运行命令 info replication,此时的运行结果如下,可以看到主机均为master:
role:master connected_slaves:0 master_failover_state:no-failover master_replid:65005be677cd7ebcecddbc540217b5a59e95dad0 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
7)设置端口为6381和6382的服务为从节点,6380为主节点,在连接6381和6382的redis-cli里运行如下命令:
slaveof 127.0.0.1 6380
参考:Redis | ZC 的学习录 (zhangc233.github.io)
参考:(29条消息) redis主从复制---搭建一主多从_Java钉子户的博客-CSDN博客