!数据的复制都是单向的,只能从主节点到从节点 一个爸爸有多个儿子,但是一个儿子不能有多个爸爸
主机以写为主,从机以读为主
主从复制 ,读写 分离, 80%的情况下都在读 减缓服务器压力
默认情况下 每台redis服务器都是主节点
主要作用
-
数组冗余 只从复制实现了数据的热备份 ,是持久化之外的一种数据冗余方式
-
故障恢复:
-
负载均衡:
-
高可用基石:
一般在项目中只用一台redis是不行的(宕机 一主二从)
原因:
-
单个redis服务器会发生单点故障 并且一台服务器需要处理所有的请求负载 压力大
-
单个redis服务器内存容量有限, 单个redis服务器最大用内存容量不应该超过20G
主从配置
1.在三台服务器上进行安装Redis
安装如下链接,三台服务器配置都一样即可,
https://www.cnblogs.com/9080dlb/p/15712625.html
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 #告诉当前从机没有老大了!你可以当老大了!!!