!数据的复制都是单向的,只能从主节点到从节点 一个爸爸有多个儿子,但是一个儿子不能有多个爸爸

主机以写为主,从机以读为主

主从复制 ,读写 分离, 80%的情况下都在读 减缓服务器压力

默认情况下 每台redis服务器都是主节点

主要作用

  1. 数组冗余只从复制实现了数据的热备份 ,是持久化之外的一种数据冗余方式
  2. 故障恢复:
  3. 负载均衡:
  4. 高可用基石:

一般在项目中只用一台redis是不行的(宕机 一主二从)

原因:

  1. 单个redis服务器会发生单点故障 并且一台服务器需要处理所有的请求负载 压力大
  2. 单个redis服务器内存容量有限, 单个redis服务器最大用内存容量不应该超过20G

主从配置

1.在三台服务器上进行安装Redis

三台服务器配置都一样即可,

2.从机配置

找到启动配置文件

redis命令查询主从 redis 查看主从关系_服务器

 

 配置完从机保存退出,启动服务

[root@iZbp1e0fmgc5gof1ly9cmlZ bin]# redis-server myconfig/redis.conf 
[root@iZbp1e0fmgc5gof1ly9cmlZ bin]# redis-cli -p 6379
127.0.0.1:6379> AUTH Amxxxxx
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>

此时就已经完成了主从复制,只需要配置从机就行了

确认完成

####从机信息
127.0.0.1:6379> info replication #从机查看信息
# Replication
role:slave                   #角色从机
master_host:192.168.123.12   #主机的ip
master_port:6379            
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_read_repl_offset:1834
slave_repl_offset:1834
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1834
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1807
repl_backlog_histlen:28
################
####主机信息
127.0.0.1:6379> info replication   #查看主机信息
# Replication
role:master               #角色主机
connected_slaves:1     #从机节点有1个,如果有多个从机就显示从机数量
slave0:ip=47.97.32.153,port=6379,state=online,offset=2114,lag=0
master_failover_state:no-failover
master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2114
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2114

第二种主从复制方法(一般不用这样)

127.0.0.1:6379> slaveof 123.222.555.22 6379 
OK
#如果有密码就配置密码,此处略
127.0.0.1:6379> info replication  #认主完成就看信息
# Replication
role:slave                     #角色从机
master_host:123.222.555.22    #主机
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_read_repl_offset:0
slave_repl_offset:0
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0


总结

配置完就行了

  1. 主机可以写 从机不能写只能读
  2. 主机中的所有信息都会被从机保存
  3. 如果老大死了, 小弟还是小弟 但是没有写操作了
  4. 老大活了,小弟自动连接
  5. 用命令行配置的, 小弟死了再复活就会变成主机(变回原来安装好的样子)
  6. 再变回小弟,立马能拿到大哥的数据
  • 原理: 小弟联系到大哥会发同步命令 ,大哥知道小弟回来消息 启动后台的存盘进程,同时把所有的数据都放进去打包完成进程后, 把所有东西给小弟,完成一次同步全量复制
  • 增量复制 平时老大收集到的发给小弟
  • 只要重新连接老大就完成一次全量复制 自动执行

思考 1 ---->2<====> 3 人体蜈蚣式的

经过测试, 中间的服务器不能写入, 但是1号写的东西2号和3号都能拿到

老大如果死了,选一个小弟当老大 篡夺皇位老大回来也没用

slaveof no one  #告诉当前从机没有老大了!你可以当老大了!!!