溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

4、redis.conf中replication配置項說明

發(fā)布時間:2020-07-09 14:18:03 來源:網(wǎng)絡(luò) 閱讀:421 作者:張創(chuàng)_ 欄目:數(shù)據(jù)庫

注意:在master-slave部署模式下,只需slave實例配置Peplication相關(guān)項,各項含義說明如下。
        1) slaveof <masterip> <masterport>
        slave實例需要配置該項,指向master的(ip, port)。
        2) masterauth <master-password>
        如果master實例啟用了密碼保護(hù),則該配置項需填master的啟動密碼;若master未啟用密碼,該配置項需要注釋掉
        3) slave-serve-stale-data
        指定slave與master連接中斷時的動作。默認(rèn)為yes,表明slave會繼續(xù)應(yīng)答來自client的請求,但這些數(shù)據(jù)可能已經(jīng)過期(因為連接中斷導(dǎo)致無法從master同步)。若配置為no,則slave除正常應(yīng)答"INFO"和"SLAVEOF"命令外,其余來自客戶端的請求命令均會得到"SYNC with master in progress"的應(yīng)答,直到該slave與master的連接重建成功或該slave被提升為master。
        4) slave-read-only
        指定slave是否只讀,默認(rèn)為yes。若配置為no,這表示slave是可寫的,但寫的內(nèi)容在主從同步完成后會被刪掉。
        5) repl-ping-slave-period
        Redis部署為Replication模式后,slave會以預(yù)定周期(默認(rèn)10s)發(fā)PING包給master,該配置可以更改這個默認(rèn)周期。
        6) repl-timeout
        有2種情況的超時均由該配置指定:1) Bulk transfer I/O timeout; 2) master data or ping response timeout。
        需要特別注意的是:若修改默認(rèn)值,則用戶輸入的值必須大于repl-ping-slave-period的配置值,否則在主從鏈路延時較高時,會頻繁timeout。
        7) repl-disable-tcp-nodelay
        指定向slave同步數(shù)據(jù)時,是否禁用socket的NO_DELAY選項。若配置為yes,則禁用NO_DELAY,則TCP協(xié)議棧會合并小包統(tǒng)一發(fā)送,這樣可以減少主從節(jié)點間的包數(shù)量并節(jié)省帶寬,但會增加數(shù)據(jù)同步到slave的時間。若配置為no,表明啟用NO_DELAY,則TCP協(xié)議棧不會延遲小包的發(fā)送時機(jī),這樣數(shù)據(jù)同步的延時會減少,但需要更大的帶寬。通常情況下,應(yīng)該配置為no以降低同步延時,但在主從節(jié)點間網(wǎng)絡(luò)負(fù)載已經(jīng)很高的情況下,可以配置為yes。
        備注:socket的NO_DELAY選項涉及到TCP協(xié)議棧的擁塞控制算法—Nagle's Algorithm。
        8) slave-priority
        指定slave的優(yōu)先級。在不只1個slave存在的部署環(huán)境下,當(dāng)master宕機(jī)時,Redis Sentinel會將priority值最小的slave提升為master。需要注意的是,若該配置項為0,則對應(yīng)的slave永遠(yuǎn)不會被Redis Sentinel自動提升為master。

        關(guān)于Replication,需要明確的幾點(以下內(nèi)容主要總結(jié)自這里):
        a. Redis的Replication跟cluster的概念不同。假如S是M的slave,則M不能把自己設(shè)置成為S的slave。若S掛掉,則M正常工作;相反,若M掛掉,則S可能會停止正常工作,這里用"可能",是因為S的具體行為由其配置文件中的slave-serve-stale-data來決定。
        b 假設(shè)共2個節(jié)點,M為master,S為slave,若M掛掉,則合理的處理方式是將S提升為master(通過SLAVE NO ONE命令)。當(dāng)原來的master M恢復(fù)后,將M設(shè)置為S的slave。當(dāng)然,實際處理方式并不限于這里的建議。
        c. 假設(shè)共3個節(jié)點,M為master,S1和S2均為slave,若M掛掉,合理的處理方式是將其中1個slave提升為master,同時,需將另一個slave的master重新設(shè)置為新的master實例。

        現(xiàn)在,新問題來了:如何得知M已經(jīng)掛掉了?
        這就涉及到Redis的監(jiān)控,所幸的是,我們可以借助Redis官方發(fā)布的工具Redis Sentinel完成監(jiān)控任務(wù)。

          下篇筆記會說明sentinel的用法并討論實際使用中可能踩到的坑。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI