7.lamp-----redis数据库(安装、一主二从、切换日志查看、读写分离)

一、源码安装

server1 ip:172.25.15.1
server2 ip:172.25.15.2
server3 ip:172.25.15.3

server1

[root@server1 ~]# tar zxf redis-6.2.1.tar.gz 
[root@server1 ~]# cd redis-6.2.1/
[root@server1 redis-6.2.1]# make
cd src && make all
.....
make[1]: Leaving directory `/root/redis-6.2.1/src'
[root@server1 redis-6.2.1]# make install
cd src && make install
make[1]: Entering directory `/root/redis-6.2.1/src'
    CC Makefile.dep
make[1]: Leaving directory `/root/redis-6.2.1/src'
make[1]: Entering directory `/root/redis-6.2.1/src'
Hint: It's a good idea to run 'make test' ;)
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory `/root/redis-6.2.1/src'

[root@server1 redis-6.2.1]# cd utils/
[root@server1 utils]# vim install_server.sh	#修改脚本不用systemd
[root@server1 utils]# ./install_server.sh 	#启动服务

server2

[root@server2 ~]# tar zxf redis-6.2.4.tar.gz 
[root@server2 ~]# cd redis-6.2.4/
[root@server2 redis-6.2.4]# yum install -y gcc
[root@server2 redis-6.2.4]# make
[root@server2 redis-6.2.4]# make install
[root@server2 redis-6.2.4]# cd utils/
[root@server2 utils]# vim install_server.sh 
[root@server2 utils]# ./install_server.sh 
.....
Starting Redis server...
Installation successful!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、主从配置(一主两从)

1.主server1

[root@server1 utils]# vim /etc/redis/6379.conf 
bind 0.0.0.0
[root@server1 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...

在这里插入图片描述

2.从server2

[root@server2 utils]# vim /etc/redis/6379.conf 
bind 0.0.0.0
replicaof 172.25.15.1 6379
[root@server2 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
[root@server2 utils]# 

在这里插入图片描述

3.从server3

安装redis
[root@server3 ~]# cd redis-6.2.4/
[root@server3 redis-6.2.4]# make install
[root@server3 redis-6.2.4]# cd utils/
[root@server3 utils]# ./install_server.sh 	#生成默认端口
[root@server3 utils]# vim /etc/redis/6379.conf 
bind 0.0.0.0
replicaof 172.25.15.1 6379
[root@server3 utils]# /etc/init.d/redis_6379 start

在这里插入图片描述

4.测试

[root@server1 redis]# /etc/init.d/redis_6379 restart
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
[root@server1 redis]# redis-cli 
127.0.0.1:6379> set name  jwl
OK
127.0.0.1:6379> 
[root@server2 redis]# /etc/init.d/redis_6379 restart
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...
[root@server2 redis]# redis-cli
127.0.0.1:6379> get name
"jwl"
127.0.0.1:6379> 

[root@server3 utils]# /etc/init.d/redis_6379 start
[root@server3 utils]# redis-cli
127.0.0.1:6379> get name
"jwl"
127.0.0.1:6379> 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
主从配置完成
设置一主一从,只需配合server1和server2即可(两台机器)

三、主从切换的日志

[root@server1 etc]# cd 
[root@server1 ~]# cd redis-6.2.1/
[root@server1 redis-6.2.1]# ls
00-RELEASENOTES  COPYING   MANIFESTO   runtest-cluster    src
BUGS             deps      README.md   runtest-moduleapi  tests
CONDUCT          INSTALL   redis.conf  runtest-sentinel   TLS.md
CONTRIBUTING     Makefile  runtest     sentinel.conf      utils
[root@server1 redis-6.2.1]# cp sentinel.conf /etc/redis/
[root@server1 redis-6.2.1]# cd /etc/redis/
[root@server1 redis]# vim sentinel.conf 
84 sentinel monitor mymaster 127.25.15.1 6379 2
125 sentinel down-after-milliseconds mymaster 10000

[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
sentinel.conf                                 100%   13KB  12.2MB/s   00:00    
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/
sentinel.conf                                 100%   13KB  12.7MB/s   00:00    
[root@server1 redis]# redis-sentinel /etc/redis/sentinel.conf 

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

四、读写分离

1.配置集群

[root@server1 redis-6.2.1]# yum install -y tcl	#安装tcl
[root@server1 ~]# cd /usr/local/
[root@server1 local]# mkdir cluster	#创建目录cluster
[root@server1 local]# cd cluster/
[root@server1 cluster]# mkdir 7000 7001 7002 7003 7004 7005 
[root@server1 cluster]# ls
7000  7001  7002  7003  7004  7005
创建七个目录,分别对七个目录创建文件redis.conf 
[root@server1 cluster]# cd 7000/
[root@server1 7000]# ls
[root@server1 7000]# vim redis.conf
[root@server1 7000]# cat redis.conf 
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
[root@server1 7000]# ls
redis.conf
[root@server1 7000]# redis-server redis.conf 	#启动
[root@server1 7000]# ls
appendonly.aof  nodes.conf  redis.conf
[root@server1 7000]# 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@server1 7000]# cp redis.conf ../7001/	#复制配置文件到上一个目录的7001目录中
[root@server1 7000]# cp redis.conf ../7002/
[root@server1 7000]# cp redis.conf ../7003/
[root@server1 7000]# cp redis.conf ../7004/
[root@server1 7000]# cp redis.conf ../7005/
[root@server1 7000]# cd ..
[root@server1 cluster]# ls
7000  7001  7002  7003  7004  7005
[root@server1 cluster]# vim 7001/redis.conf 
[root@server1 cluster]# cat 7001/redis.conf 
port 7001
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
[root@server1 cluster]# vim 7002/redis.conf 
[root@server1 cluster]# cat 7002/redis.conf 
port 7002
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
[root@server1 cluster]# vim 7003/redis.conf 
[root@server1 cluster]# cat 7003/redis.conf 
port 7003
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
[root@server1 cluster]# vim 7004/redis.conf 
[root@server1 cluster]# cat 7004/redis.conf 
port 7004
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
[root@server1 cluster]# vim 7005/redis.conf 
[root@server1 cluster]# cat 7005/redis.conf 
port 7005
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes
[root@server1 cluster]# 
配置完成

在这里插入图片描述
在这里插入图片描述

2.逐个启动

[root@server1 cluster]# ls
7000  7001  7002  7003  7004  7005
[root@server1 cluster]# cd 7001
[root@server1 7001]# redis-server redis.conf	#必须在所在目录启动
[root@server1 7001]# ls
appendonly.aof  nodes.conf  redis.conf
[root@server1 7001]# cd ../7002
[root@server1 7002]# redis-server redis.conf
[root@server1 7002]# ls
appendonly.aof  nodes.conf  redis.conf
[root@server1 7002]# cd ../7003
[root@server1 7003]# redis-server redis.conf
[root@server1 7003]# ls
appendonly.aof  nodes.conf  redis.conf
[root@server1 7003]# cd ../7004
[root@server1 7004]# redis-server redis.conf
[root@server1 7004]# ls
appendonly.aof  nodes.conf  redis.conf
[root@server1 7004]# cd ../7005
[root@server1 7005]# redis-server redis.conf
[root@server1 7005]# ls
appendonly.aof  nodes.conf  redis.conf
[root@server1 7005]# ps ax 	#查看进程

在这里插入图片描述
在这里插入图片描述

3.集群开启

[root@server1 ~]# redis-cli  --cluster create --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 670e0e0b13612802e335e9fd79ddcd58781da921 127.0.0.1:7000
   slots:[0-5460] (5461 slots) master
M: 5f13bd6ceedf4f2b79f49a8fdacdf62a9df3d5a7 127.0.0.1:7001
   slots:[5461-10922] (5462 slots) master
M: c1caf36ac12a327ad1dfa9921c45dc629f390920 127.0.0.1:7002
   slots:[10923-16383] (5461 slots) master
S: d08fd438d5f9e8bbddd55c9ac40edfe064a40117 127.0.0.1:7003
   replicates c1caf36ac12a327ad1dfa9921c45dc629f390920
S: 3afabfcdd53fba2551d6cad9837620dddcc5e179 127.0.0.1:7004
   replicates 670e0e0b13612802e335e9fd79ddcd58781da921
S: 02ecb48af2419e12539edc3cbf05994f0114dc40 127.0.0.1:7005
   replicates 5f13bd6ceedf4f2b79f49a8fdacdf62a9df3d5a7
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
..
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 670e0e0b13612802e335e9fd79ddcd58781da921 127.0.0.1:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 3afabfcdd53fba2551d6cad9837620dddcc5e179 127.0.0.1:7004
   slots: (0 slots) slave
   replicates 670e0e0b13612802e335e9fd79ddcd58781da921
M: 5f13bd6ceedf4f2b79f49a8fdacdf62a9df3d5a7 127.0.0.1:7001
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: d08fd438d5f9e8bbddd55c9ac40edfe064a40117 127.0.0.1:7003
   slots: (0 slots) slave
   replicates c1caf36ac12a327ad1dfa9921c45dc629f390920
M: c1caf36ac12a327ad1dfa9921c45dc629f390920 127.0.0.1:7002
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 02ecb48af2419e12539edc3cbf05994f0114dc40 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 5f13bd6ceedf4f2b79f49a8fdacdf62a9df3d5a7
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@server1 ~]# 

在这里插入图片描述
在这里插入图片描述

4.查看集群

[root@server1 ~]# redis-cli --cluster check 127.0.0.1:7000
127.0.0.1:7000 (670e0e0b...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7001 (5f13bd6c...) -> 0 keys | 5462 slots | 1 slaves.
127.0.0.1:7002 (c1caf36a...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 670e0e0b13612802e335e9fd79ddcd58781da921 127.0.0.1:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 3afabfcdd53fba2551d6cad9837620dddcc5e179 127.0.0.1:7004
   slots: (0 slots) slave
   replicates 670e0e0b13612802e335e9fd79ddcd58781da921
M: 5f13bd6ceedf4f2b79f49a8fdacdf62a9df3d5a7 127.0.0.1:7001
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: d08fd438d5f9e8bbddd55c9ac40edfe064a40117 127.0.0.1:7003
   slots: (0 slots) slave
   replicates c1caf36ac12a327ad1dfa9921c45dc629f390920
M: c1caf36ac12a327ad1dfa9921c45dc629f390920 127.0.0.1:7002
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
S: 02ecb48af2419e12539edc3cbf05994f0114dc40 127.0.0.1:7005
   slots: (0 slots) slave
   replicates 5f13bd6ceedf4f2b79f49a8fdacdf62a9df3d5a7
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

在这里插入图片描述

关闭7005

[root@server1 ~]# redis-cli -c -p 7005	#连接端口号为7005的数据库
127.0.0.1:7005> SHUTDOWN	#结束关闭
not connected> 

[root@server1 ~]# redis-cli --cluster check 127.0.0.1:7000
Could not connect to Redis at 127.0.0.1:7005: Connection refused
127.0.0.1:7000 (670e0e0b...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7001 (5f13bd6c...) -> 0 keys | 5462 slots | 0 slaves.
127.0.0.1:7002 (c1caf36a...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 670e0e0b13612802e335e9fd79ddcd58781da921 127.0.0.1:7000
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 3afabfcdd53fba2551d6cad9837620dddcc5e179 127.0.0.1:7004
   slots: (0 slots) slave
   replicates 670e0e0b13612802e335e9fd79ddcd58781da921
M: 5f13bd6ceedf4f2b79f49a8fdacdf62a9df3d5a7 127.0.0.1:7001	
   slots:[5461-10922] (5462 slots) master
S: d08fd438d5f9e8bbddd55c9ac40edfe064a40117 127.0.0.1:7003
   slots: (0 slots) slave
   replicates c1caf36ac12a327ad1dfa9921c45dc629f390920
M: c1caf36ac12a327ad1dfa9921c45dc629f390920 127.0.0.1:7002
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@server1 ~]# 

在这里插入图片描述
不能把7001和7005同时关闭,会导致集群崩溃。他两是一组。哈希槽不完整。

5.恢复集群工作

[root@server1 redis-6.2.1]# cd /usr/local/cluster/
[root@server1 cluster]# ls
7000  7001  7002  7003  7004  7005
[root@server1 cluster]# cd 7005
[root@server1 7005]# redis-server redis.conf
[root@server1 7005]# redis-cli --cluster check 127.0.0.1:7000

在这里插入图片描述

6.分离读写

[root@server1 7005]# redis-cli -c -p 7005
127.0.0.1:7005> set age 18		#写入age=18
-> Redirected to slot [741] located at 127.0.0.1:7000
OK
127.0.0.1:7000> exit
[root@server1 7005]# redis-cli -c -p 7001
127.0.0.1:7001> get age		#查询age
-> Redirected to slot [741] located at 127.0.0.1:7000
"18"
127.0.0.1:7000> 

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值