redis:主从切换


1. server3做server4的slave

1. [root@server4 ~]# scp -r redis-5.0.3 root@172.25.60.3:/root/

[root@server3 ~]# cd redis-5.0.3/
2. [root@server3 redis-5.0.3]# make install

[root@server3 utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379
Config file    : /etc/redis/6379.conf
Log file       : /var/log/redis_6379.log
Data dir       : /var/lib/redis/6379
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

3. [root@server3 utils]# vim /etc/redis/6379.conf 
bind 0.0.0.0    # 对所有的访问开启
slaveof 172.25.60.4 6379   # 作为172.25.60.4的slave
4. [root@server3 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
[root@server3 utils]# netstat -antlpe
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      0          21410      2260/redis-server 0 

测试:slave只能读

[root@server3 utils]# redis-cli
127.0.0.1:6379> get name

2. 主从切换

slave:server3 server2
master:server4

server2同server3一样配置redis

1. [root@server2 ~]# cd redis-5.0.3/
2. [root@server2 redis-5.0.3]# make install
3. [root@server2 redis-5.0.3]# cd utils/
[root@server2 utils]# ./install_server.sh 
4. [root@server2 utils]# vim /etc/redis/6379.conf
bind 0.0.0.0    # 对所有的访问开启
slaveof 172.25.60.4 6379   # 作为172.25.60.4的slave
5. [root@server2 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
6. [root@server2 utils]# netstat -antlpe
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      0          20390      2247/redis-server 0 

测试:

[root@server2 utils]# redis-cli
127.0.0.1:6379> get name
"jy"

server4:

1. [root@server4 redis-5.0.3]# cp sentinel.conf /etc/redis/
[root@server4 redis-5.0.3]# cd /etc/redis/
[root@server4 redis]# ls
6379.conf  sentinel.conf

2. [root@server4 redis]# vim sentinel.conf
protected-mode no   # 关闭保护模式
sentinel monitor mymaster 172.25.60.4 6379 2  # 设置master,2表示至少有两个slave认为master挂了,master1才认为是挂了
sentinel down-after-milliseconds mymaster 10000    # master挂了10s后进行切换

3. [root@server4 redis]# scp sentinel.conf root@172.25.60.3:/etc/redis/
sentinel.conf                         100% 9710     9.5KB/s   00:00    
[root@server4 redis]# scp sentinel.conf root@172.25.60.2:/etc/redis/
sentinel.conf                         100% 9710     9.5KB/s   00:00    

4. [root@server4 redis]# redis-server /etc/redis/sentinel.conf --sentinel

server3:

[root@server3 utils]# redis-server /etc/redis/sentinel.conf --sentinel

server2:

[root@server2 utils]# redis-server /etc/redis/sentinel.conf --sentinel

server4:

1. [root@server4 ~]# redis-cli
127.0.0.1:6379> info
# Replication
role:master
connected_slaves:2
slave0:ip=172.25.60.3,port=6379,state=online,offset=29228,lag=0
slave1:ip=172.25.60.2,port=6379,state=online,offset=29228,lag=1

[root@server4 ~]# netstat -antlpe|grep 26379   # 哨兵的端口26379
2. [root@server4 ~]# redis-cli -p 26379
127.0.0.1:26379> info
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=172.25.60.4:6379,slaves=2,sentinels=3

测试:

[root@server4 ~]# redis-cli 
127.0.0.1:6379> SHUTDOWN

6599:X 12 Mar 2020 12:44:48.361 # +sdown slave 172.25.60.4:6379 172.25.60.4 6379 @ mymaster 172.25.60.2 6379  # master选择server2接替自己的工作
[root@server2 ~]# redis-cli
127.0.0.1:6379> info
# Replication
role:master
connected_slaves:1
slave0:ip=172.25.60.3,port=6379,state=online,offset=133674,lag=0

6379.conf文件内容解释

[root@server4 ~]# vim /etc/redis/6379.conf 
# 内存磁盘刷新数据的频率,由下往上,60s内有10000个刷新,如果没有等待300秒是否有10个刷新,如果没有等待900秒是否有一个刷新
save 900 1   
save 300 10
save 60 10000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值