什么是主从复制:
Redis Replication是一种 master-slave 模式的复制机制,这种机制使得 slave 节点可以成为与 master 节点完全相同的副本,可以采用一主多从或者级联结构。架构如下:
主从复制的配置要点:
(1)配从库不配主,从库配置:slaveof 主库IP 主库端口
(2)查看redis的配置信息:info replication
模拟环境:三台、一主两从
作用:
主要解决redis读写分离,虽然redis读和写的速度都很快,但是在高并发的情况读写分离是有必要的:主机负责写,从机负责读,可以设置多个从机,防止其中一台从机断电,服务器瘫痪等带来的从机死机,从而整个项目不能正常运行。
主机和从机的配置
- 将.counf文件中开启 daemonize yes
- 将 bind 改成 bind 0.0.0.0 注解会出现问题
- 将.counf文件中关闭 protected-mode no
- 指定端口 主机不需要改默认6479 从机需要修改
- 指定工作目录 dir
- 修改pid文件名字,pidfile
- 日志文件名字,logfile
- 设置密码 requirepass
- 修改rdb文件名 dump.rdb
- 开启aof appeendfilename
- 主机不需要配置,只配置从机通行密码 masterauth 访问ip和port replicaof
开启daemonize
bind 改成 bind 0.0.0.0
关闭 protected-mode no
修改port
主机不用改
dir
pidfile
logfile
requirepass
dump.rdb dbfilename
开启aof
主机不配置 只配置从机 masterauth和replicaof
开启redis
先开主机 在开从机
主机:redis-server 配置的.conf文件
redis-cli -a ******
从机: redis-server 配置的.conf文件
redis-cli -a 密码 -p +刚刚配置的端口号
用info replication查看连接是否成功
主机:
127.0.0.1:6379> info replication
# Replication
#role:master 主机
role:master
connected_slaves:1
slave0:ip=192.168.200.135,port=6380,state=online,offset=3066,lag=0
master_failover_state:no-failover
master_replid:18d2fdb5d3325cb70b9fbcf35f28c4e37f205169
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3066
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3066
从机:
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:192.168.200.134
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_read_repl_offset:3178
slave_repl_offset:3178
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:18d2fdb5d3325cb70b9fbcf35f28c4e37f205169
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:3178
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3178
常见问题:master_link_status:down
redis配置主从服务器后,显示master_link_status:down的解决方法
解决问题一、你的主机设置了密码,那么我们需要在从机里面写上你主机的密码
二:如果密码是一致的,查看是否将bind 注解了 将bind 改成 bind 0.0.0.0
三: 查看刚刚配置的从机Log文件报错的原因
验证:
在主机中set k2 v2
从机get k2 和在从机set 看看会出现是问题
出现 :(error) READONLY You can't write against a read only replica.从机没有写的权限