!数据的复制都是单向的,只能从主节点到从节点 一个爸爸有多个儿子,但是一个儿子不能有多个爸爸
主机以写为主,从机以读为主
主从复制 ,读写 分离, 80%的情况下都在读 减缓服务器压力
默认情况下 每台redis服务器都是主节点
主要作用
- 数组冗余只从复制实现了数据的热备份 ,是持久化之外的一种数据冗余方式
- 故障恢复:
- 负载均衡:
- 高可用基石:
一般在项目中只用一台redis是不行的(宕机 一主二从)
原因:
- 单个redis服务器会发生单点故障 并且一台服务器需要处理所有的请求负载 压力大
- 单个redis服务器内存容量有限, 单个redis服务器最大用内存容量不应该超过20G
主从配置
1.在三台服务器上进行安装Redis
三台服务器配置都一样即可,
2.从机配置
找到启动配置文件
配置完从机保存退出,启动服务
[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 人体蜈蚣式的
经过测试, 中间的服务器不能写入, 但是1号写的东西2号和3号都能拿到
老大如果死了,选一个小弟当老大 篡夺皇位老大回来也没用
slaveof no one #告诉当前从机没有老大了!你可以当老大了!!!