<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Redis主從復(fù)制

      概念

      主從復(fù)制,是指將一臺(tái)Redis服務(wù)器的數(shù)據(jù),復(fù)制到其他的Redis服務(wù)器。

      前者稱(chēng)為主節(jié)點(diǎn)(master/leader),后者稱(chēng)為從節(jié)點(diǎn)(slave/follower);數(shù)據(jù)的復(fù)制是單向的,只能由主節(jié)點(diǎn)到從節(jié)點(diǎn)。
      Master以寫(xiě)為主,Slave 以讀為主。

      默認(rèn)情況下,每臺(tái)Redis服務(wù)器都是主節(jié)點(diǎn);且一個(gè)主節(jié)點(diǎn)可以有多個(gè)從節(jié)點(diǎn)(或沒(méi)有從節(jié)點(diǎn)),但一個(gè)從節(jié)點(diǎn)只能有一個(gè)主節(jié)點(diǎn)。

      主從復(fù)制的作用主要包括:

      1、數(shù)據(jù)冗余:主從復(fù)制實(shí)現(xiàn)了數(shù)據(jù)的熱備份,是持久化之外的一種數(shù)據(jù)冗余方式。

      2、故障恢復(fù):當(dāng)主節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí),可以由從節(jié)點(diǎn)提供服務(wù),實(shí)現(xiàn)快速的故障恢復(fù);實(shí)際上是一種服務(wù)的冗余。

      3、負(fù)載均衡:在主從復(fù)制的基礎(chǔ)上,配合讀寫(xiě)分離,可以由主節(jié)點(diǎn)提供寫(xiě)服務(wù),由從節(jié)點(diǎn)提供讀服務(wù)(即寫(xiě)Redis數(shù)據(jù)時(shí)應(yīng)用連接主節(jié)點(diǎn),讀Redis數(shù)據(jù)時(shí)應(yīng)用連接從節(jié)點(diǎn)),分擔(dān)服務(wù)器負(fù)載;尤其是在寫(xiě)少讀多的場(chǎng)景下,通過(guò)多個(gè)從節(jié)點(diǎn)分擔(dān)讀負(fù)載,可以大大提高Redis服務(wù)器的并發(fā)量。

      4、高可用基石:除了上述作用以外,主從復(fù)制還是哨兵和集群能夠?qū)嵤┑幕A(chǔ),因此說(shuō)主從復(fù)制是Redis高可用的基礎(chǔ)。

      一般來(lái)說(shuō),要將Redis運(yùn)用于工程項(xiàng)目中,只使用一臺(tái)Redis是萬(wàn)萬(wàn)不能的,原因如下:
      1、從結(jié)構(gòu)上,單個(gè)Redis服務(wù)器會(huì)發(fā)生單點(diǎn)故障,并且一臺(tái)服務(wù)器需要處理所有的請(qǐng)求負(fù)載,壓力較大;
      2、從容量上,單個(gè)Redis服務(wù)器內(nèi)存容量有限,就算一臺(tái)Redis服務(wù)器內(nèi)存容量為256G,也不能將所有內(nèi)存用作Redis存儲(chǔ)內(nèi)存,一般來(lái)說(shuō),單臺(tái)Redis最大使用內(nèi)存不應(yīng)該超過(guò)20G。

      電商網(wǎng)站上的商品,一般都是一次上傳,無(wú)數(shù)次瀏覽的,說(shuō)專(zhuān)業(yè)點(diǎn)也就是"多讀少寫(xiě)"。

      對(duì)于這種場(chǎng)景,我們可以使如下這種架構(gòu):

      一主二從

      配置主從復(fù)制,至少需要三個(gè)Redis客戶(hù)端,一主二從,一個(gè)主機(jī)(Master),兩個(gè)從機(jī)(Master)!

      層層鏈路

      上一個(gè)Slave 可以是下一個(gè)slave 和 Master,Slave 同樣可以接收其他 slaves 的連接和同步請(qǐng)求,那么該 slave 作為了鏈條中下一個(gè)的master,可以有效減輕 master 的寫(xiě)壓力!

      謀朝篡位

      一主二從的情況下,如果主機(jī)斷了,從機(jī)可以使用命令 SLAVEOF NO ONE 將自己改為主機(jī)!這個(gè)時(shí)候其余的從機(jī)鏈接到這個(gè)節(jié)點(diǎn)。對(duì)一個(gè)從屬服務(wù)器執(zhí)行命令 SLAVEOF NO ONE 將使得這個(gè)從屬服務(wù)器關(guān)閉復(fù)制功能,并從從屬服務(wù)器轉(zhuǎn)變回主服務(wù)器,原來(lái)同步所得的數(shù)據(jù)集不會(huì)被丟棄。

      主機(jī)再回來(lái),也只是一個(gè)光桿司令了,從機(jī)為了正常使用跑到了新的主機(jī)上!

      復(fù)制原理

      Slave 啟動(dòng)成功連接到 master 后會(huì)發(fā)送一個(gè)sync命令。

      Master 接到命令,啟動(dòng)后臺(tái)的存盤(pán)進(jìn)程,同時(shí)收集所有接收到的用于修改數(shù)據(jù)集命令,在后臺(tái)進(jìn)程執(zhí)行完畢之后,master將傳送整個(gè)數(shù)據(jù)文件到slave,并完成一次完全同步。

      全量復(fù)制:而slave服務(wù)在接收到數(shù)據(jù)庫(kù)文件數(shù)據(jù)后,將其存盤(pán)并加載到內(nèi)存中。

      增量復(fù)制:Master 繼續(xù)將新的所有收集到的修改命令依次傳給slave,完成同步。

      但是只要是重新連接master,一次完全同步(全量復(fù)制)將被自動(dòng)執(zhí)行。

      哨兵模式

      概述

      主從切換技術(shù)的方法是:當(dāng)主服務(wù)器宕機(jī)后,需要手動(dòng)把一臺(tái)從服務(wù)器切換為主服務(wù)器,這就需要人工干預(yù),費(fèi)事費(fèi)力,還會(huì)造成一段時(shí)間內(nèi)服務(wù)不可用。這不是一種推薦的方式,更多時(shí)候,我們優(yōu)先考慮哨兵模式。Redis從2.8開(kāi)始正式提供了Sentinel(哨兵) 架構(gòu)來(lái)解決這個(gè)問(wèn)題。

      謀朝篡位的自動(dòng)版,能夠后臺(tái)監(jiān)控主機(jī)是否故障,如果故障了根據(jù)投票數(shù)自動(dòng)將從庫(kù)轉(zhuǎn)換為主庫(kù)。

      哨兵模式是一種特殊的模式,首先Redis提供了哨兵的命令,哨兵是一個(gè)獨(dú)立的進(jìn)程,作為進(jìn)程,它會(huì)獨(dú)立運(yùn)行。其原理是哨兵通過(guò)發(fā)送命令,等待Redis服務(wù)器響應(yīng),從而監(jiān)控運(yùn)行的多個(gè)Redis實(shí)例。

      這里的哨兵有兩個(gè)作用

      • 通過(guò)發(fā)送命令,讓Redis服務(wù)器返回監(jiān)控其運(yùn)行狀態(tài),包括主服務(wù)器和從服務(wù)器。
      • 當(dāng)哨兵監(jiān)測(cè)到master宕機(jī),會(huì)自動(dòng)將slave切換成master,然后通過(guò)發(fā)布訂閱模式通知其他的從服務(wù)器,修改配置文件,讓它們切換主機(jī)。

      然而一個(gè)哨兵進(jìn)程對(duì)Redis服務(wù)器進(jìn)行監(jiān)控,可能會(huì)出現(xiàn)問(wèn)題,為此,我們可以使用多個(gè)哨兵進(jìn)行監(jiān)控。各個(gè)哨兵之間還會(huì)進(jìn)行監(jiān)控,這樣就形成了多哨兵模式。

      假設(shè)主服務(wù)器宕機(jī),哨兵1先檢測(cè)到這個(gè)結(jié)果,系統(tǒng)并不會(huì)馬上進(jìn)行failover過(guò)程,僅僅是哨兵1主觀的認(rèn)為主服務(wù)器不可用,這個(gè)現(xiàn)象成為主觀下線。

      當(dāng)后面的哨兵也檢測(cè)到主服務(wù)器不可用,并且數(shù)量達(dá)到一定值時(shí),那么哨兵之間就會(huì)進(jìn)行一次投票,投票的結(jié)果由一個(gè)哨兵發(fā)起,進(jìn)行failover[故障轉(zhuǎn)移]操作。

      切換成功后,就會(huì)通過(guò)發(fā)布訂閱模式,讓各個(gè)哨兵把自己監(jiān)控的從服務(wù)器實(shí)現(xiàn)切換主機(jī),這個(gè)過(guò)程稱(chēng)為客觀下線。

      哨兵模式的優(yōu)缺點(diǎn)

      優(yōu)點(diǎn)

      1. 哨兵集群模式是基于主從模式的,所有主從的優(yōu)點(diǎn),哨兵模式同樣具有。
      2. 主從可以切換,故障可以轉(zhuǎn)移,系統(tǒng)可用性更好。
      3. 哨兵模式是主從模式的升級(jí),系統(tǒng)更健壯,可用性更高。

      缺點(diǎn)

      1. Redis較難支持在線擴(kuò)容,在集群容量達(dá)到上限時(shí)在線擴(kuò)容會(huì)變得很復(fù)雜。
      2. 實(shí)現(xiàn)哨兵模式的配置也不簡(jiǎn)單,甚至可以說(shuō)有些繁瑣。

      哨兵配置說(shuō)明

      # Example sentinel.conf
      
      # 哨兵sentinel實(shí)例運(yùn)行的端口 默認(rèn)26379
      port 26379
      
      # 哨兵sentinel的工作目錄
      dir /tmp
      
      # 哨兵sentinel監(jiān)控的redis主節(jié)點(diǎn)的 ip port
      # master-name 可以自己命名的主節(jié)點(diǎn)名字 只能由字母A-z、數(shù)字0-9 、這三個(gè)字符".-_"組成。
      # quorum 配置多少個(gè)sentinel哨兵統(tǒng)一認(rèn)為master主節(jié)點(diǎn)失聯(lián) 那么這時(shí)客觀上認(rèn)為主節(jié)點(diǎn)失聯(lián)了
      # sentinel monitor <master-name> <ip> <redis-port> <quorum>
      sentinel monitor mymaster 127.0.0.1 6379 2
      
      # 當(dāng)在Redis實(shí)例中開(kāi)啟了requirepass foobared 授權(quán)密碼 這樣所有連接Redis實(shí)例的客戶(hù)端都要提供密碼
      # 設(shè)置哨兵sentinel 連接主從的密碼 注意必須為主從設(shè)置一樣的驗(yàn)證密碼
      # sentinel auth-pass <master-name> <password>
      sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
      
      # 指定多少毫秒之后 主節(jié)點(diǎn)沒(méi)有應(yīng)答哨兵sentinel 此時(shí) 哨兵主觀上認(rèn)為主節(jié)點(diǎn)下線 默認(rèn)30秒
      # sentinel down-after-milliseconds <master-name> <milliseconds>
      sentinel down-after-milliseconds mymaster 30000
      
      # 這個(gè)配置項(xiàng)指定了在發(fā)生failover主備切換時(shí)最多可以有多少個(gè)slave同時(shí)對(duì)新的master進(jìn)行 同步,這個(gè)數(shù)字越小,完成failover所需的時(shí)間就越長(zhǎng),但是如果這個(gè)數(shù)字越大,就意味著越 多的slave因?yàn)閞eplication而不可用??梢酝ㄟ^(guò)將這個(gè)值設(shè)為 1 來(lái)保證每次只有一個(gè)slave 處于不能處理命令請(qǐng)求的狀態(tài)。
      # sentinel parallel-syncs <master-name> <numslaves>
      sentinel parallel-syncs mymaster 1
      
      # 故障轉(zhuǎn)移的超時(shí)時(shí)間 failover-timeout 可以用在以下這些方面:
      #1. 同一個(gè)sentinel對(duì)同一個(gè)master兩次failover之間的間隔時(shí)間。
      #2. 當(dāng)一個(gè)slave從一個(gè)錯(cuò)誤的master那里同步數(shù)據(jù)開(kāi)始計(jì)算時(shí)間。直到slave被糾正為向正確的master那里同步數(shù)據(jù)時(shí)。
      #3.當(dāng)想要取消一個(gè)正在進(jìn)行的failover所需要的時(shí)間。
      #4.當(dāng)進(jìn)行failover時(shí),配置所有slaves指向新的master所需的最大時(shí)間。不過(guò),即使過(guò)了這個(gè)超時(shí),slaves依然會(huì)被正確配置為指向master,但是就不按parallel-syncs所配置的規(guī)則來(lái)了
      # 默認(rèn)三分鐘
      # sentinel failover-timeout <master-name> <milliseconds>
      sentinel failover-timeout mymaster 180000
      
      # SCRIPTS EXECUTION
      
      #配置當(dāng)某一事件發(fā)生時(shí)所需要執(zhí)行的腳本,可以通過(guò)腳本來(lái)通知管理員,例如當(dāng)系統(tǒng)運(yùn)行不正常時(shí)發(fā)郵件通知相關(guān)人員。
      #對(duì)于腳本的運(yùn)行結(jié)果有以下規(guī)則:
      #若腳本執(zhí)行后返回1,那么該腳本稍后將會(huì)被再次執(zhí)行,重復(fù)次數(shù)目前默認(rèn)為10
      #若腳本執(zhí)行后返回2,或者比2更高的一個(gè)返回值,腳本將不會(huì)重復(fù)執(zhí)行。
      #如果腳本在執(zhí)行過(guò)程中由于收到系統(tǒng)中斷信號(hào)被終止了,則同返回值為1時(shí)的行為相同。
      #一個(gè)腳本的最大執(zhí)行時(shí)間為60s,如果超過(guò)這個(gè)時(shí)間,腳本將會(huì)被一個(gè)SIGKILL信號(hào)終止,之后重新執(zhí)行。
      
      #通知型腳本:當(dāng)sentinel有任何警告級(jí)別的事件發(fā)生時(shí)(比如說(shuō)redis實(shí)例的主觀失效和客觀失效等等),將會(huì)去調(diào)用這個(gè)腳本,這時(shí)這個(gè)腳本應(yīng)該通過(guò)郵件,SMS等方式去通知系統(tǒng)管理員關(guān)于系統(tǒng)不正常運(yùn)行的信息。調(diào)用該腳本時(shí),將傳給腳本兩個(gè)參數(shù),一個(gè)是事件的類(lèi)型,一個(gè)是事件的描述。如果sentinel.conf配置文件中配置了這個(gè)腳本路徑,那么必須保證這個(gè)腳本存在于這個(gè)路徑,并且是可執(zhí)行的,否則sentinel無(wú)法正常啟動(dòng)成功。
      #通知腳本
      # sentinel notification-script <master-name> <script-path>
      sentinel notification-script mymaster /var/redis/notify.sh
      
      # 客戶(hù)端重新配置主節(jié)點(diǎn)參數(shù)腳本
      # 當(dāng)一個(gè)master由于failover而發(fā)生改變時(shí),這個(gè)腳本將會(huì)被調(diào)用,通知相關(guān)的客戶(hù)端關(guān)于master地址已經(jīng)發(fā)生改變的信息。
      # 以下參數(shù)將會(huì)在調(diào)用腳本時(shí)傳給腳本:
      # <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
      # 目前<state>總是“failover”,
      # <role>是“l(fā)eader”或者“observer”中的一個(gè)。
      # 參數(shù) from-ip, from-port, to-ip, to-port是用來(lái)和舊的master和新的master(即舊的slave)通信的
      # 這個(gè)腳本應(yīng)該是通用的,能被多次調(diào)用,不是針對(duì)性的。
      # sentinel client-reconfig-script <master-name> <script-path>
      sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
      
      posted @ 2022-04-15 17:47  HZX↑  閱讀(97)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 中文字幕国产精品二区| 亚洲精品乱码久久久久久自慰 | 办公室强奷漂亮少妇视频| 美女禁区a级全片免费观看| 亚洲а∨天堂久久精品2021| 老鸭窝在线视频| 一个色综合国产色综合| 成人区人妻精品一区二蜜臀| 噜噜久久噜噜久久鬼88| 国产精品高清一区二区不卡| 99久久国产福利自产拍| 人妻少妇无码精品专区| 99精品国产高清一区二区麻豆| 日本高清不卡一区二区三| 天天爽夜夜爱| 熟妇女人妻丰满少妇中文字幕| 中文字幕人妻不卡精品| 国产在线一区二区在线视频 | 好紧好湿好黄的视频| 97人妻成人免费视频| 日本黄页网站免费观看| 亚洲国产在一区二区三区| 亚洲日韩久久综合中文字幕| 东京热加勒比无码少妇| 天天爽夜夜爱| 成人免费无遮挡在线播放| 亚洲 日韩 国产 制服 在线 | 性一交一乱一伦| 国产乱码日韩精品一区二区| 日本韩国日韩少妇熟女少妇| 丰满无码人妻热妇无码区| 国语精品国内自产视频| av激情亚洲男人的天堂| 欧美精品一产区二产区| 国产精品三级爽片免费看| 影视先锋av资源噜噜| 久久香蕉国产亚洲av麻豆| 18岁日韩内射颜射午夜久久成人| 国产亚洲日韩在线aaaa| 海南省| 亚洲人成色99999在线观看|