Redis主从配置及手动切换遇到的问题

解析我做redis主从遇到的问题:
redis只要下载好压缩包后解压缩然后make就可以直接使用了,启动服务是:
/usr/local/src/redis/src/redis-server

然后进入交互界面是:
/usr/lcoal/src/redis/src/reids-cli

假如没有更改port那么默认监听6379端口,如果改了,登录时务必在后面-p  端口号。才能登录。
然后如果更改了redis.conf文件那么启动时:
 /usr/local/src/redis/src/redis-server  /usr/local/src/redis/redis.conf

这样才能出发配置。

接下来开始配置主从:
1、修改主redis的配置文件:
daemonize yes
bind 127.0.0.1    ###要么把这句屏蔽掉,要么后面的ip改为自己的,但是登录时又要-h加上IP地址。
protected-mode no    ##要么改为no,要么就添加认证,那么在登录时就要先验证才能登陆。

2、修改从redis的配置文件:
daemonize yes
port 6380    ##改变下端口
logfile "/usr/local/src/redis.log"    ##redis默认是不记录日志的,这里写一个日志的路径,好排错。
slaveof 192.168.40.12 6379  ##设置为40.12的从redis。

然后两台服务器都启动:
[root@CentOSa ~]# /usr/local/src/redis-3.2.1/src/redis-server /usr/local/src/redis-3.2.1/redis.conf
[root@centosb redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-server /usr/local/src/redis-3.2.1/redis.conf

登录然后测试一下同步:
[root@centosa ~]# /usr/local/src/redis-3.2.1/src/redis-cli 
127.0.0.1:6379> set test 123
OK
127.0.0.1:6379> get test
"123"
[root@centosb redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-cli -p 6380
127.0.0.1:6380> get test
"123"

如果出现错误可以查看一下日志:/usr/lcoal/src/redis.log

如果要设置验证,在配置文件中修改一下:
requirepass RedHat    ##取消这一句的注释,然后后面改为自己的密码。
重新启动。
但是下次登录时,什么也做不了,要么:
auth  redhat  ##登录后先输入一句,验证。

或者是在登录时加上-a  redhat  这样就可以了。

持久化:
    rdb:
配置文件默认开启:
save 900 1
save 300 10
save 60 10000

会在安装目录下生成一个dump.rdb文件,这就是保存着缓存数据的文件。
rdb适合恢复大规模数据,但是恢复数据的完整性不高。

oaf(默认不开启):
修改配置文件:
appendonly yes
appendfsync everysec    ##每秒写入一次。

主从切换:

停止主的服务。
然后在从操作:
127.0.0.1:6380> slaveof no one
127.0.0.1:6380> 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:6380> set name lsf
OK
127.0.0.1:6380> set host redhat
OK
127.0.0.1:6380> 
127.0.0.1:6380> save
OK

然后把dump.rdb复制到原来的主redis:
[root@centosb redis-3.2.1]# scp dump.rdb centosa:/usr/local/src/redis-3.2.1/
dump.rdb

启动原来的主服务器:
[root@centosa redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-server /usr/local/src/redis-3.2.1/redis.conf

然后看一下keys;
[root@centosa redis-3.2.1]# /usr/local/src/redis-3.2.1/src/redis-cli 
127.0.0.1:6379> 
127.0.0.1:6379> keys *
1) "mylist"
2) "host"
3) "name"
127.0.0.1:6379> get name
"lsf"
127.0.0.1:6379> get host
"redhat"

再把现在的主切换成从,原来的主恢复主的身份:
127.0.0.1:6380> slaveof 192.168.40.12 6379
OK
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:192.168.40.12
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:15
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:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.40.19,port=6380,state=online,offset=365,lag=0
master_repl_offset:365
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:364

下面关于Redis的文章您也可能喜欢,不妨参考下:

相关推荐