Redis部署-主从复制-分离-主从切换

部署Redis: 

mkdir -p /data/server															创建工作目录,上传tar包。
cd /data/server
tar xf redis-3.2.6.tar.gz
cd redis-3.2.6
make
Hint: It's a good idea to run 'make test' ;)
 
make[1]: Leaving directory `/data/server/redis-3.2.6/src'
echo $?																			检验是否正确安装。
0
cd /etc/init.d/																	上传启动redis启动脚本,加上执行权限。
chmod +x redis
ln -s /data/server/redis-3.2.6/ /data/server/redis								创建软连接,并检查。
[root@web02-7 init.d]# ll /data/server/
total 1516
lrwxrwxrwx 1 root root      25 Mar 28 23:03 redis -> /data/server/redis-3.2.6/
drwxrwxr-x 6 root root    4096 Dec  6 16:38 redis-3.2.6
-rw-r--r-- 1 root root 1544806 Dec 25 17:57 redis-3.2.6.tar.gz
[root@web02-7 redis-3.2.6]# chkconfig redis on									加入开机自启动项,并检查。
[root@web02-7 redis-3.2.6]# chkconfig --list redis
redis           0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@web02-7 redis-3.2.6]# cp redis.conf{,.bak}								做好备份,方便过滤
[root@web02-7 redis-3.2.6]# grep -i '^[^$|#]' redis.conf.bak >redis.conf		过滤无用信息使配置文件看起来简洁
[root@web02-7 redis-3.2.6]# vim redis.conf										修改配置文件,添加需要的参数,见后期文章
[root@web02-7 redis-3.2.6]# /etc/init.d/redis start								启动
Starting Redis server...
[root@web02-7 redis-3.2.6]# netstat -lntup|grep 63								检查端口是否起来
tcp        0      0 127.0.0.1:6379              0.0.0.0:*                   LISTEN      4338/redis-server 1
[root@web02-7 src]# ln -s /data/server/redis/src/redis-cli /usr/bin/redis-cli	创建软连接,命令的路径
[root@web02-7 src]# redis-cli													登录

主从复制 

配置:

[root@web02-7 ~]# egrep "slaveof" /data/server/7001/redis.conf /data/server/7002/redis.conf 
/data/server/7001/redis.conf:slaveof 172.16.1.7 7000
/data/server/7002/redis.conf:slaveof 172.16.1.7 7000

实验结果 

[root@web02-7 ~]# redis-cli -p 7000
127.0.0.1:7000> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=7001,state=online,offset=1,lag=1
slave1:ip=127.0.0.1,port=7002,state=online,offset=1,lag=1
master_repl_offset:1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:0

[root@web02-7 ~]# redis-cli -p 7001
127.0.0.1:7001> INFO replication
# Replication
role:slave
master_host:172.16.1.7
master_port:7000
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:1065
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

[root@web02-7 ~]# redis-cli -p 7002
127.0.0.1:7002> INFO replication
# Replication
role:slave
master_host:172.16.1.7
master_port:7000
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:1079
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

数据测试同步,默认数据分离

127.0.0.1:7000> set name xusx
OK
127.0.0.1:7000> get name
"xusx"
127.0.0.1:7000> save
OK

127.0.0.1:7001> get name
"xusx"
127.0.0.1:7001> set name 123
(error) READONLY You can't write against a read only slave.

127.0.0.1:7002> get name
"xusx"
127.0.0.1:7002> set name 123
(error) READONLY You can't write against a read only slave.

主从切换  

1、停止主redis

[root@web02-7 ~]# redis-cli -p 7000 shutdown
[root@web02-7 ~]# redis-cli -p 7000
Could not connect to Redis at 127.0.0.1:7000: Connection refused
Could not connect to Redis at 127.0.0.1:7000: Connection refused

 2、将从redis设成主redis(升级为master的命令)

127.0.0.1:7001> slaveof NO ONE
OK
127.0.0.1:7001> INFO replication
# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:7001> set sex man
OK

4、原来的主redis恢复正常了,要重新切换回去
1)将现在的主redis的数据进行保存

127.0.0.1:7001> save
OK

2)将现在的主redis根目录下dump.rdb文件拷贝覆盖到原来主redis的根目录

3)启动原来的主redis

[root@web02-7 ~]# for i in 0 1 2 3 4;do /data/server/700$i/redis-server /data/server/700$i/redis.conf;done
[root@web02-7 ~]# redis-cli -p 7000
127.0.0.1:7000> 

4)在现在的主redis中切换,做主从的时候也是用这条命令

127.0.0.1:7001> SLAVEOF 172.16.1.7 7000
OK

5)查看7000,变成主库

127.0.0.1:7000> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=7002,state=online,offset=85,lag=1
slave1:ip=127.0.0.1,port=7001,state=online,offset=99,lag=0
master_repl_offset:99
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:98

  

 

posted @ 2017-03-29 00:22  reborn枪  阅读(441)  评论(0)    收藏  举报