Redis主从复制
Redis主从复制
由于windows版的redis无法进行哨兵模式配置,为了演示,就切换到linux的redis上。
概念
是指将一台redis服务器上的数据复制到其他redis服务器上。前者称为主节点(master),后者称为从节点(slave)。
主机可以读写,从机只能读。
作用:
- 高可用 (坏了一个,还有从机)
- 负载均衡 (读写分离)
- 故障恢复
手动配置环境
-
将redis.conf 在原目录复制二份,分别将复制后的起名redis6380.conf、redis6381.conf(我这里的redis.conf,在/usr/local下,redis-server在/usr/local/bin下)
-
修改这几处地方1、端口 2、pid 名字 3、log文件名字 4、dump.rdb 名字(以6379举例:1 port 6379 、2 、pidfile /var/run/redis_6379.pid 3 logfile “6379.log”、4 dump6379.rdb)
-
分别执行:bin/redis-server redis.conf 、bin/redis-server redis6380.conf、bin/redis-server redis6381.conf
-
执行 ps aux | grep redis (查看是否启动成功)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-coc22yOf-最后分别连上各自的客户端(redis-cli -p 6379 、 redis-cli -p 6380、redis-cli -p 6381)
一主二从测试
首先从机执行命令
# 在6380客户端执行下面的slaveof命令 ; 在6381客户端同理,执行slaveof命令
slaveof 127.0.0.1 6379
OK
127.0.0.1:6380> info replication
# Replication 看到下面信息,代表从机设置成功
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:1
master_link_down_since_seconds:1593437278
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:fe5c0bdda83c7bb433b87efd1c19c5bba1292e16
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
如果主机的配置文件设置了密码,怎么进行主从复制
主机密码如下:
# requirepass foobared
requirepass bilibili
如果主机设置密码,那么命令是不成功的,我们看下6380和6381的日志
5410:S 28 Jun 2020 20:19:45.757 * Connecting to MASTER 127.0.0.1:6379
5410:S 28 Jun 2020 20:19:45.757 * MASTER <-> REPLICA sync started
5410:S 28 Jun 2020 20:19:45.757 * Non blocking connect for SYNC fired the event.
5410:S 28 Jun 2020 20:19:45.758 * Master replied to PING, replication can continue...
5410:S 28 Jun 2020 20:19:45.758 * (Non critical) Master does not understand REPLCONF listening-port: -NOAUTH Authentication required.
5410:S 28 Jun 2020 20:19:45.759 * (Non critical) Master does not understand REPLCONF capa: -NOAUTH Authentication required.
提示没有权限。
解决方案:
-
在两个从机配置文件加上密码,如下:
-
# masterauth <master-password> #这是关键词 masterauth bilibili
-
然后重启所有redis服务器
-
两个从机再执行
slaveof 127.0.0.1 6379
-
主机执行:
info replication # 显示 role:master connected_slaves:2 slave0:ip=127.0.0.1,port=6380,state=online,offset=350,lag=0 slave1:ip=127.0.0.1,port=6381,state=online,offset=350,lag=0 master_replid:02366eabef5c622c655e3697f456a2e97b4c133b master_replid2:0000000000000000000000000000000000000000 master_repl_offset:350 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:350 127.0.0.1:6379>
想永久的配置主从机而不是每次在客户端输入命令,该怎么做呢?
在配置文件(redis.conf)中找到下面的关键词
# slaveof <masterip> <masterport> slaveof 127.0.0.1 6379
哨兵模式
最近比较忙,一直没空去写这篇,这周一定补完哨兵模式
本文地址:https://blog.csdn.net/longqiyuye925/article/details/107394064
上一篇: 单链表实现贪吃蛇