1. 程式人生 > >redis主從配置及手動切換遇到的問題

redis主從配置及手動切換遇到的問題

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


本文出自 “運維小記” 博客,請務必保留此出處http://lsfandlinux.blog.51cto.com/13405754/1982366

redis主從配置及手動切換遇到的問題