這篇文章主要介紹了redis中主從復(fù)制怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)建站,專注為中小企業(yè)提供官網(wǎng)建設(shè)、營銷型網(wǎng)站制作、響應(yīng)式網(wǎng)站開發(fā)、展示型成都網(wǎng)站制作、網(wǎng)站建設(shè)等服務(wù),幫助中小企業(yè)通過網(wǎng)站體現(xiàn)價值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營銷推廣問題。
就是我們所說的主從復(fù)制,主機數(shù)據(jù)更新后根據(jù)配置和策略,自動同步到備機的master/slver機制,Master以寫為主,Slave以讀為主。
讀寫分離、容災(zāi)恢復(fù)
每次與master斷開之后,都需要重新連接,除非你配置進redis.conf文件
Info replication
redis.conf配置:
##設(shè)置當(dāng)本機為slav服務(wù)時,設(shè)置master服務(wù)的IP地址及端口,在Redis啟動時,它會自動從master進行數(shù)據(jù)同步 slaveof###當(dāng)master服務(wù)設(shè)置了密碼保護時,slav服務(wù)連接master的密碼 masterauth
拷貝多個redis.conf文件
復(fù)制出三個配置文件,模擬三個redis服務(wù) 端口區(qū)別開
[root@VM_0_7_centos ~]# cd /myredis/ [root@VM_0_7_centos myredis]# ll total 172 -rw-r--r-- 1 root root 92 Sep 18 21:38 dump.rdb -rw-r--r-- 1 root root 82646 Sep 23 14:56 redis_aof.conf -rw-r--r-- 1 root root 82645 Sep 23 10:37 redis.conf [root@VM_0_7_centos myredis]# cp redis.conf redis6379.conf [root@VM_0_7_centos myredis]# cp redis.conf redis6380.conf [root@VM_0_7_centos myredis]# cp redis.conf redis6381.conf
開啟 daemonize yes
Pid文件名字:
pidfile redis6479.pid
指定端口:
port 6379
Log文件名字
logfile 6379.log
Dump.rdb名字:
dbfilename dump6379.rdb
按照上述方法復(fù)制出3個配置文件,
redis6379.conf ,redis6380.conf ,redis6381.conf
[root@VM_0_7_centos myredis]# ll total 448 -rw-r--r-- 1 root root 5684 Sep 24 23:22 6379.log -rw-r--r-- 1 root root 5683 Sep 24 23:08 9736.log -rw-r--r-- 1 root root 92 Sep 24 23:22 dump6379.rdb -rw-r--r-- 1 root root 92 Sep 24 23:08 dump9736.rdb -rw-r--r-- 1 root root 92 Sep 18 21:38 dump.rdb -rw-r--r-- 1 root root 82649 Sep 24 23:21 redis6379.conf -rw-r--r-- 1 root root 82649 Sep 24 23:20 redis6380.conf -rw-r--r-- 1 root root 82649 Sep 24 23:20 redis6381.conf -rw-r--r-- 1 root root 82646 Sep 23 14:56 redis_aof.conf -rw-r--r-- 1 root root 82645 Sep 23 10:37 redis.conf
分別啟動三臺服務(wù)器
[root@VM_0_7_centos myredis]# ps -ef |grep redis root 31408 1 0 15:33 ? 00:00:00 redis-server 0.0.0.0:6379 root 31439 16305 0 15:34 pts/0 00:00:00 redis-cli -p 6379 root 31503 1 0 15:34 ? 00:00:00 redis-server 0.0.0.0:6380 root 31524 16394 0 15:34 pts/1 00:00:00 redis-cli -p 6380 root 31573 1 0 15:35 ? 00:00:00 redis-server 0.0.0.0:6381 root 31598 16451 0 15:35 pts/2 00:00:00 redis-cli -p 6381
三臺服務(wù)沒有數(shù)據(jù)
使用info replication 查看信息,三個服務(wù),沒有關(guān)聯(lián),都是master
1.在主機填加數(shù)據(jù)
127.0.0.1:6379> set k1 v1 OK 127.0.0.1:6379> set k2 v2 OK 127.0.0.1:6379> set k3 v3 OK 127.0.0.1:6379> keys * 1) "k2" 2) "k3" 3) "k1"
2.在6380 和 6381 訂閱主機
127.0.0.1:6380> clear 127.0.0.1:6380> slaveof 127.0.0.1 6379 OK
127.0.0.1:6381> clear 127.0.0.1:6381> slaveof 127.0.0.1 6379 OK
3. 主機在從機訂閱后設(shè)置值,查看主從情況
從機訂閱后會復(fù)制主機全部信息
4. 使用 info replication 查看主機 和從機 狀態(tài)
5.只有主機能寫數(shù)據(jù)
6.主機關(guān)閉后 ,從機角色不變 為 slave
7. 主機重新開啟后,角色不變 仍然是 master
8.從機與master 斷開之后,都需要重新連接,除非配置進redis.conf 文件
特點:上一個Slave可以是下一個Slave的Master,Slave 同樣可以接收其他Slaves的連接和同步請求,那么該Slave作為了鏈條中下一個的master可以有效減輕master的寫壓力
中途變更轉(zhuǎn)向 會清除之前的數(shù)據(jù),重新建立拷貝最新的
Slaveof 新主庫IP 新主庫端口
1. 建立鏈接
2.測試 主從復(fù)制
關(guān)鍵命令
SLAVEOF NO ONE 使當(dāng)前數(shù)據(jù)庫停止與其他數(shù)據(jù)庫的同步,轉(zhuǎn)為主庫
1.以一主二從為基礎(chǔ)
2.主機斷開后,從機 SLAVEOF NO ONE 轉(zhuǎn)為主庫
3.從機6380 被6381 監(jiān)聽后成為主機,成功復(fù)制其值
4. 如果原來6379重啟成功,已經(jīng)失去主機身份,不在集群內(nèi)。沒有集群內(nèi)的數(shù)據(jù)
Slave啟動成功連接到master后會發(fā)送一個sync命令。
Master接到命令啟動后臺的存盤進程,同時收集所有接收到的用于修改數(shù)據(jù)集命令,在后臺進程執(zhí)行完畢之后,master將傳送整個數(shù)據(jù)文件到slave,以完成一次完全同步。
首次進行全量控制:而slave服務(wù)在接收到數(shù)據(jù)庫文件數(shù)據(jù)后,將其存盤并加載到內(nèi)存中。
增量控制:master繼續(xù)將新的所有收集到的修改命令一次傳給slave,完成同步
但是只要是重新連接master,一次完全同步(全量復(fù)制)將被自動執(zhí)行。
以一主二從為基礎(chǔ)。
反客為主的自動版,能夠后臺監(jiān)控主機是否故障,如果故障了根據(jù)投票數(shù)自動將從庫轉(zhuǎn)換為主庫
1.自定義的/myredis目錄下新建sentinel.conf文件,名字決不能錯。
2.內(nèi)容
sentinel monitor被監(jiān)控數(shù)據(jù)庫名字(自己起名字)127.0.0.1 6379 1
sentinel monitor host6379 127.0.0.1 6379 1
上面最后一個數(shù)字1,表示主機掛掉后slave投票看讓誰解題成為主機,得票數(shù)多的成為主機
3.啟動哨兵
Redis-sentinel /myredis/sentinel.conf
[root@VM_0_7_centos myredis]# cd /usr/local/bin [root@VM_0_7_centos bin]# ll total 37824 -rw-r--r-- 1 root root 139 Sep 23 15:21 appendonly.aof -rw-r--r-- 1 root root 125 Sep 23 16:00 dump.rdb -rwxr-xr-x 1 root root 4739968 Jun 12 23:09 redis-benchmark -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-aof -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-rdb -rwxr-xr-x 1 root root 5050384 Jun 12 23:09 redis-cli lrwxrwxrwx 1 root root 12 Jun 12 23:09 redis-sentinel -> redis-server -rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-server -rwxr-xr-x 1 root root 9840 Jun 12 22:55 tclsh8.6 [root@VM_0_7_centos bin]# redis-sentinel /myredis/sentinel.conf
4.查看當(dāng)前數(shù)據(jù)
5.關(guān)閉6379,稍等片刻選舉中新的主機 6381
6. 6379重啟后,成為從機,監(jiān)聽6381
7. 注意:一組sentinel能同時監(jiān)控多個Master
復(fù)制延時:由于所有的寫操作都是先在Master上操作,然后同步更新到Slave中,所以從Master同步到Slave機器有一定的延遲,當(dāng)系統(tǒng)很繁忙時,延遲問題會更加嚴(yán)重,Slave機器數(shù)量的增加也會使這個問題更加嚴(yán)重。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Redis中主從復(fù)制怎么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!