Redis構建簡單的主從複製


Redis構建簡單的主從複製


原理:

  當設置好slave服務器後,slave會建立和master的連接,然後發送sync命令。無論是第一次同步建立的連接還是連接斷開後的重新連 接,master都會啓動一個後臺進程,將數據庫快照保存到文件中,同時master主進程會開始收集新的寫命令並緩存起來。後臺進程完成寫文件 後,master就發送文件給slave,slave將文件保存到磁盤上,然後加載到內存恢復數據庫快照到slave上。



配置前提,關閉防火牆或允許redis端口通行

Centos7    

IP:10.0.0.128(master)

IP:10.0.0.129(slave)

05116a6302bca1576cc1d045e7ad3408.png-wh_


主服務器配置:

下載安裝包,解壓並編譯;

[root@master ~]# cd /usr/local/src/
[root@master src]# wget  
[root@master src]# tar -zxvf redis-stable.tar.gz 
[root@master src]# mv redis-stable /usr/local/redis
[root@master src]# cd /usr/local/redis/
[root@master redis]# make && make install

copy配置文件redis.conf到/etc/目錄下

[root@master redis]# cp redis.conf /etc/

修改配置文件;

[root@master ~]# vim /etc/redis.conf 
daemonize yes #開啓redis進程
pidfile /var/run/redis_6379.pid #redis進程存放位置
dbfilename dump.rdb #指定快照文件名
dir /var/lib/redis #快照存儲位置
masterauth 123456 #主庫認證密碼
requirepass 123456 #從庫連接密碼
#bind 127.0.0.1 #註釋

啓動redis服務;

[root@master redis]# /usr/local/bin/redis-server /etc/redis.conf
[root@master redis]# ps -ef |grep redis
root       5925      1  0 20:07 ?        00:00:00 /usr/local/bin/redis-server *:6379
root       5973   1614  0 20:09 pts/0    00:00:00 grep --color=auto redis


從服務器配置;

配置與主服務器一樣,只需要修改配置文件,如下:

slaveof 10.0.0.128 6379 #指向主服務器
masterauth 123456 #主庫設置的密碼

啓動服務;

[root@slave ~]# /usr/local/bin/redis-server /etc/redis.conf

測試:

主服務器

127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.0.0.129,port=6379,state=online,offset=2571,lag=1
master_replid:c44ed3b15b076872c1091054cfd1f0fddd54c0e6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2571
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2571
127.0.0.1:6379> 
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379


從服務器

[root@slave ~]# redis-cli 
127.0.0.1:6379> 
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> INFO replication
# Replication
role:slave
master_host:10.0.0.128
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:2718
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:c44ed3b15b076872c1091054cfd1f0fddd54c0e6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:2718
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:2718
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> set test hello
(error) READONLY You can't write against a read only slave.
127.0.0.1:6379> ####從服務器只讀



###其它命令

刪除keys:

127.0.0.1:6379>del keyname

當主服務器down,可以用一下命令將從升主:

127.0.0.1:6379> SLAVEOF NO ONE



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章