我们来配置一个一主两从的服务,根据前面写的已经配置好的redis基础上进行主从配置
一:进入redis的配置目录
cd /usr/local/redis
创建下面3个目录,命令为:
make -p /usr/local/redis/master /usr/local/redis/slave1 /usr/local/redis/slave2
复制 redis.conf 到这个3个目录
cp /usr/local/redis/redis.conf /usr/local/redis/master/redis.conf
依次复制redis.conf到另外2个从配置目录
二:配置项
2.1)修改端口为master->1000, slave1->2000, slave2->3000
vi /usr/local/redis/master/redis.conf
相应的修改其它2个从配置文件
2.2) 修改pidfile和logfile
在redis.conf中找到pidfile和logfile
pidfile /usr/local/redis/master/redis.pid
logfile /usr/local/redis/master/redis.log
相应的修改其它2个从配置文件slave1,slave2
2.3) 把启动方式设置为后台常驻进程方式
daemonize yes
修改主从所有的配置文件
2.4) 当然我们还可以设置外网访问的ip,(下面的实践没有设置,简单点)
默认就是绑定到了127.0.0.1
三:启动3个redis
/usr/local/redis/bin/redis-server /usr/local/redis/master/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/slave1/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/slave2/redis.conf
四:客户端连接redis
4.1)连接slave1:
./bin/redis-cli -h 127.0.0.1 -p 2000
然后输入下面的命令查看服务器信息:
127.0.0.1:> info Replication
# Replication
role:master
connected_slaves:
master_repl_offset:
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
# Replication
role:master
查看其它2台服务器得到的都是同样的信息
五:那么下面开始主从复制的配置
修改2台从服务器的配置文件
vi /usr/local/redis/slave1/redis.conf
设置为 slaveof 127.0.0.1 1000
如下图:
2台从服务器配置完成后,重启redis,查看redis是否重启成功
ps -ef|grep redis
主服务器不需要修改配置
六:验证
6.1)登录进从服务器slave1
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p
127.0.0.1:> info replacation
# Replication
role:slave
master_host:127.0.0.1
master_port:
master_link_status:up
master_last_io_seconds_ago:
master_sync_in_progress:
slave_repl_offset:
slave_priority:
slave_read_only:
connected_slaves:
master_repl_offset:
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
6.2)登录进主服务器master:
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p
127.0.0.1:> info replication
# Replication
role:master
connected_slaves:
slave0:ip=127.0.0.1,port=,state=online,offset=,lag=
slave1:ip=127.0.0.1,port=,state=online,offset=,lag=
master_repl_offset:
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen:
6.3)打开3个客户端窗口,分别连上主服务器和2个从服务器
master服务器用set命令设置一个值:
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 1000
127.0.0.1:1000> set test testslave
OK
查看2台从服务器是否获取到正确的值:
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 2000
127.0.0.1:2000> get test
"testslave"
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 3000
127.0.0.1:3000> get test
"testslave"
全部得到正确的值,说明配置就成功了
参考:
http://doc.redisfans.com/topic/replication.html