redis主从复制及配置

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

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

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

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

主要作用

  1. 数组冗余 只从复制实现了数据的热备份 ,是持久化之外的一种数据冗余方式

  2. 故障恢复:

  3. 负载均衡:

  4. 高可用基石:

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

原因:

  1. 单个redis服务器会发生单点故障 并且一台服务器需要处理所有的请求负载 压力大

  2. 单个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. 如果老大死了, 小弟还是小弟 但是没有写操作了

  4. 老大活了,小弟自动连接

  5. 用命令行配置的, 小弟死了再复活就会变成主机(变回原来安装好的样子)

  6. 再变回小弟,立马能拿到大哥的数据

    • 原理: 小弟联系到大哥会发同步命令 ,大哥知道小弟回来消息 启动后台的存盘进程,同时把所有的数据都放进去打包完成进程后, 把所有东西给小弟,完成一次同步全量复制

    • 增量复制 平时老大收集到的发给小弟

    • 只要重新连接老大就完成一次全量复制 自动执行

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

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

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

 slaveof no one  #告诉当前从机没有老大了!你可以当老大了!!!
原文地址:https://www.cnblogs.com/9080dlb/p/15726277.html