在一台机器上运行2个及以上的redis,是redis支持多实例的功能,基于端口号的不同,就能够运行多个相互独立的redis数据库,当我们的一个redis服务挂掉之后,另外一个可以马上接管,继续提供服务,也就是一主多从的关系,下面来介绍一下,如何来搭建
什么是多实例?
就是机器上运行了多个redis相互独立的进程
互不干扰的独立的数据库
叫做多个redis数据库的实例,基于配置文件区分即可
1:准备好2个配置文件,分别写入如下内容
#第一个
[root@localhost etc]# vim s25-master.redis.conf
port 6379
daemonize yes
pidfile /s25/6379/redis.pid
loglevel notice
logfile "/s25/6379/redis.log"
dbfilename dump.rdb
dir /s25/6379
protected-mode no
2:准备第2个配置文件,分别写入如下内容
#第二个
[root@localhost etc]# vim s25-slave.redis.conf
port 6389
daemonize yes
pidfile /s25/6389/redis.pid
loglevel notice
logfile "/s25/6389/redis.log"
dbfilename dump.rdb
dir /s25/6389
protected-mode no
slaveof 127.0.0.1 6379 #也可直接在配置文件中,定义好复制关系,启动后,立即就会建立复制
3:分别创建对应的文件夹
[root@localhost etc]# mkdir -p /src/{6379,6389}
4:分别启动2个数据库,查看他们的复制关系
[root@localhost s25]# redis-server /etc/s25-master.redis.conf
[root@localhost s25]# redis-server /etc/s25-slave.redis.conf
效果图
5:分别查看他们的进程已经复制关系
[root@localhost s25]# redis-cli -p 6379 info replication
[root@localhost s25]# redis-cli -p 6389 info replication
可以看到主从关系已经建立了!!!
PS:通过一条命令,配置他们的复制关系,注意,这个命令只是临时配置redis的复制关系,想要永久修改,还得修改配置文件
#手动建立复制关系哦
redis-cli -p 6389 slaveof 127.0.0.1 6379
6.此时6379已然是主库,6389已然是从库
此时可以向6379中写入数据,能够同步到6389中
6389是一个只读的数据库,无法写入数据
测试环节
在6379中设置key值,可以看到在6389中已经自动可以获取到所有设置的key值了
OK,效果还不错
###下面来试下一主多从的形式,以及主从复制故障切换
1.再创建一个配置文件,port是6399,且加入到一主一从的复制关系中去
vim s25-salve2-redis.conf
port 6399
daemonize yes
pidfile /s25/6399/redis.pid
loglevel notice
logfile "/s25/6399/redis.log"
dbfilename dump.rdb
dir /s25/6399
protected-mode no
slaveof 127.0.0.1 6379
2.创建数据文件夹
mkdir -p /s25/6399
3.启动6399的数据库,查看他的身份复制关系
[root@localhost s25]# redis-server /etc/s25-salve2.redis.conf
4.分别查看他们的进程已经复制关系
[root@localhost etc]# redis-cli -p 6399 info replication
好了,接下来就是测试环节了
5:先查看下本机启动的所有redis进程服务
[root@localhost etc]# ps -ef | grep redis
root 27407 1 0 18:26 ? 00:00:05 redis-server *:6379
root 27930 1 0 19:54 ? 00:00:00 redis-server 127.0.0.1:6389
root 28035 1 0 20:12 ? 00:00:00 redis-server 127.0.0.1:6399
root 28057 27704 0 20:16 pts/0 00:00:00 grep --color=auto redis
[root@localhost etc]#
6:分别查看复制关系
[root@localhost etc]# redis-cli -p 6379 info replication
[root@localhost etc]# redis-cli -p 6389 info replication
[root@localhost etc]# redis-cli -p 6399 info replication
7:此时直接干掉主库即可
[root@localhost etc]# kill -9 27407
8:此时一位从库,不乐意了,翻身农奴做主人,去掉自己的从库身份,没有这个从库的枷锁,我就是我自己的主人
[root@localhost etc]# redis-cli -p 6399 slaveof no one
9:此时6399已然是主库了,修改6389的复制信息,改为6399即可
[root@localhost etc]# redis-cli -p 6389 slaveof 127.0.0.1 6399
效果图
10:此时可以向主库6399写入数据,6389查看数据即可
测试写入数据
11:从库挂掉,无所谓,重新再建立一个从库,加入主从复制即可,。,。
OK,大功告成~~~~~~~~~