欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Redis主從復(fù)制如何實(shí)現(xiàn)

這篇文章主要講解了“redis主從復(fù)制如何實(shí)現(xiàn)”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Redis主從復(fù)制如何實(shí)現(xiàn)”吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、阜南網(wǎng)站維護(hù)、網(wǎng)站推廣。

主從復(fù)制

主從復(fù)制可以在一定程度上擴(kuò)展redis性能,redis的主從復(fù)制和關(guān)系型數(shù)據(jù)庫的主從復(fù)制類似,從機(jī)能夠精確的復(fù)制主機(jī)上的內(nèi)容。實(shí)現(xiàn)了主從復(fù)制之后,一方面能夠?qū)崿F(xiàn)數(shù)據(jù)的讀寫分離,降低master的壓力,另一方面也能實(shí)現(xiàn)數(shù)據(jù)的備份。

配置方式

假設(shè)我有三個redis實(shí)例,地址分別如下:

192.168.248.128:6379  
192.168.248.128:6380  
192.168.248.128:6381

即同一臺服務(wù)器上三個實(shí)例,配置方式如下:

1.將redis.conf文件更名為redis6379.conf,方便我們區(qū)分,然后把redis6379.conf再復(fù)制兩份,分別為redis6380.conf和redis6381.conf。如下:

Redis主從復(fù)制如何實(shí)現(xiàn)  

2.打開redis6379.conf,將如下配置均加上6379,(默認(rèn)是6379的不用修改),如下:

port 6379
pidfile /var/run/redis_6379.pid
logfile "6379.log"
dbfilename dump6379.rdb
appendfilename "appendonly6379.aof"

3.同理,分別打開redis6380.conf和redis6381.conf兩個配置文件,將第二步涉及到6379的分別改為6380和6381。
4.輸入如下命令,啟動三個redis實(shí)例:

[root@localhost redis-4.0.8]# redis-server redis6379.conf
[root@localhost redis-4.0.8]# redis-server redis6380.conf
[root@localhost redis-4.0.8]# redis-server redis6381.conf

5.輸入如下命令,分別進(jìn)入三個實(shí)例的控制臺:

[root@localhost redis-4.0.8]# redis-cli -p 6379
[root@localhost redis-4.0.8]# redis-cli -p 6380
[root@localhost redis-4.0.8]# redis-cli -p 6381

此時我就成功配置了三個redis實(shí)例了。

6.假設(shè)在這三個實(shí)例中,6379是主機(jī),即master,6380和6381是從機(jī),即slave,那么如何配置這種實(shí)例關(guān)系呢,很簡單,分別在6380和6381上執(zhí)行如下命令:

127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
OK

這一步也可以通過在兩個從機(jī)的redis.conf中添加如下配置來解決:

slaveof 127.0.0.1 6379

OK,主從關(guān)系搭建好后,我們可以通過如下命令可以查看每個實(shí)例當(dāng)前的狀態(tài),如下:

127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=56,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=56,lag=0
master_replid:26ca818360d6510b717e471f3f0a6f5985b6225d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:56
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:56

我們可以看到6379是一個主機(jī),上面掛了兩個從機(jī),兩個從機(jī)的地址、端口等信息都展現(xiàn)出來了。如果我們在6380上執(zhí)行INFO replication,顯示信息如下:

127.0.0.1:6380> INFO replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:630
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:26ca818360d6510b717e471f3f0a6f5985b6225d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:630
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:630

我們可以看到6380是一個從機(jī),從機(jī)的信息以及它的主機(jī)的信息都展示出來了。

7.此時,我們在主機(jī)中存儲一條數(shù)據(jù),在從機(jī)中就可以get到這條數(shù)據(jù)了。

主從復(fù)制注意點(diǎn)

1.如果主機(jī)已經(jīng)運(yùn)行了一段時間了,并且了已經(jīng)存儲了一些數(shù)據(jù)了,此時從機(jī)連上來,那么從機(jī)會將主機(jī)上所有的數(shù)據(jù)進(jìn)行備份,而不是從連接的那個時間點(diǎn)開始備份。
2.配置了主從復(fù)制之后,主機(jī)上可讀可寫,但是從機(jī)只能讀取不能寫入(可以通過修改redis.conf中 slave-read-only 的值讓從機(jī)也可以執(zhí)行寫操作)。
3.在整個主從結(jié)構(gòu)運(yùn)行過程中,如果主機(jī)不幸掛掉,重啟之后,他依然是主機(jī),主從復(fù)制操作也能夠繼續(xù)進(jìn)行。

復(fù)制原理

每一個master都有一個replication ID,這是一個較大的偽隨機(jī)字符串,標(biāo)記了一個給定的數(shù)據(jù)集。每個master也持有一個偏移量,master將自己產(chǎn)生的復(fù)制流發(fā)送給slave時,發(fā)送多少個字節(jié)的數(shù)據(jù),自身的偏移量就會增加多少,目的是當(dāng)有新的操作修改自己的數(shù)據(jù)集時,它可以以此更新slave的狀態(tài)。復(fù)制偏移量即使在沒有一個slave連接到master時,也會自增,所以基本上每一對給定的Replication ID, offset都會標(biāo)識一個master數(shù)據(jù)集的確切版本。當(dāng)slave連接到master時,它們使用PSYNC命令來發(fā)送它們記錄的舊的master replication ID和它們至今為止處理的偏移量。通過這種方式,master能夠僅發(fā)送slave所需的增量部分。但是如果master的緩沖區(qū)中沒有足夠的命令積壓緩沖記錄,或者如果slave引用了不再知道的歷史記錄(replication ID),則會轉(zhuǎn)而進(jìn)行一個全量重同步:在這種情況下,slave會得到一個完整的數(shù)據(jù)集副本,從頭開始(參考redis官網(wǎng))。

簡單來說,就是以下幾個步驟:

    1.slave啟動成功連接到master后會發(fā)送一個sync命令。  
    2.Master接到命令啟動后臺的存盤進(jìn)程,同時收集所有接收到的用于修改數(shù)據(jù)集命令。  
    3.在后臺進(jìn)程執(zhí)行完畢之后,master將傳送整個數(shù)據(jù)文件到slave,以完成一次完全同步。  
    4.全量復(fù)制:而slave服務(wù)在接收到數(shù)據(jù)庫文件數(shù)據(jù)后,將其存盤并加載到內(nèi)存中。  
    5.增量復(fù)制:Master繼續(xù)將新的所有收集到的修改命令依次傳給slave,完成同步。  
    6.但是只要是重新連接master,一次完全同步(全量復(fù)制)將被自動執(zhí)行。

感謝各位的閱讀,以上就是“Redis主從復(fù)制如何實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Redis主從復(fù)制如何實(shí)現(xiàn)這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)頁標(biāo)題:Redis主從復(fù)制如何實(shí)現(xiàn)
文章轉(zhuǎn)載:http://chinadenli.net/article44/jiisee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、微信公眾號網(wǎng)站維護(hù)、網(wǎng)站策劃手機(jī)網(wǎng)站建設(shè)、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司