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

浙公网安备 33010602011771号