中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Redis主從復制與哨兵機制是什么

發布時間:2023-03-29 17:25:15 來源:億速云 閱讀:109 作者:iii 欄目:開發技術

這篇文章主要介紹了Redis主從復制與哨兵機制是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Redis主從復制與哨兵機制是什么文章都會有所收獲,下面我們一起來看看吧。

一、Redis復制是什么?

Redis復制就是主從復制,當主服務器數據發生變化時,自動將新的數據同步到從數據庫。

讀數據庫可以進行讀寫操作,從數據庫一般指用于讀操作。

Redis復制可以保證主數據庫崩潰時可以進行數據恢復。

二、Redis復制能干嘛?

  1. 讀寫分離

  2. 容災恢復

  3. 數據備份

  4. 水平擴容支撐高并發

三、Redis復制的缺點

1、復制延遲

由于所有的寫操作都發生在master數據庫,然后同步到slave數據庫中,所以會有一定的數據延遲,當系統負擔過重時,延遲越大,slave機器的增加也會增加數據延遲的時間。

2、master宕機

如果master宕機了,默認情況下不會將salve數據庫自動升級為master數據庫。

四、樂觀復制策略

Redis采用樂觀復制策略,容忍一段時間內主從數據庫不一致,但保證最終一致性。這個策略保證了性能,在復制的時候,主數據庫不會阻塞,可以繼續提供服務。

五、Redis復制常用命令

1、info replication

查看節點的主從關系和配置信息。

2、replicaof 主庫Ip 主庫port

在從數據庫的redis.conf中配置。

3、slaveof 主庫IP 主庫port

在運行期間修改slave節點的信息,如果該數據庫已經是其它主數據庫的從數據庫了,那么它會停止與其的主從關系,轉而成為新配置的主庫的從數據庫。

4、slaveof no one

使當前數據庫停止與其它數據庫的同步,升級為主數據庫。

六、Redis復制工作流程

1、slave啟動成功后,會連接master數據庫,發送一個sync命令,同步數據;如果是第一次連接,則會進行一次全量復制,slave自身的數據會被master數據覆蓋清除;

2、master數據庫收到sync命令后,通過RDB開始保存快照,同時將所有接收到的用于修改數據庫的命令緩存起來,master數據庫執行完RDB持久化后,master將RBD文件和所有緩存的命令發送到所有的slave數據庫,完成一次數據同步;

3、slave收到RDB文件和命令緩存后,將其加載到內存中,從而完成復制初始化;

4、repl-ping-replica-period 10,表示master發出ping包的周期默認是10秒;

5、完成首次數據全量同步后,master繼續將新的收集到的修改命令定期傳給slave數據庫,完成數據同步;

6、如果從機重啟了,master的backlog中會記錄offset,master會將offset后面的數據復制給slave。

7187:C 14 Mar 22:14:24.106 # nzbc Redis is starting nzbc
7187:C 14 Mar 22:14:24.107 # Redis version=6.0.8, bits=64, commit=00000000, modified=0, pid=7187, just started
7187:C 14 Mar 22:14:24.108 # Configuration loaded
7188:S 14 Mar 22:14:24.110 * Increased maximum number of open files to 10032 (it was originally set to 256).
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 6.0.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6380
 |    `-._   `._    /     _.-'    |     PID: 7188
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

7188:S 14 Mar 22:14:24.120 # Server initialized
7188:S 14 Mar 22:14:24.114 * DB loaded from disk: 0.000 seconds
7188:S 14 Mar 22:14:24.122 * Before turning into a slave, using my master parameters to synthesize a cached master: I may be able to synchronize with the new master with just a partial transfer.
7188:S 14 Mar 22:14:24.122 * Ready to accept connections
7188:S 14 Mar 22:14:24.123 * Connecting to MASTER 127.0.0.1:6379
7188:S 14 Mar 22:14:24.123 * MASTER <-> SLAVE sync started
7188:S 14 Mar 22:14:24.123 * Non blocking connect for SYNC fired the event.
7188:S 14 Mar 22:14:24.124 * Master replied to PING, replication can continue...
7188:S 14 Mar 22:14:24.124 * Trying a partial resynchronization (request 9b3cs5w9g6x3004fa9a0999361035b71ecf70ab4:30783).
7188:S 14 Mar 22:14:24.130 * Full resync from master: cb4as85df693ad62f09ce4f486e0d43ec8f36334:0
7188:S 14 Mar 22:14:24.130 * Discarding previously cached master state.
7188:S 14 Mar 22:14:24.163 * MASTER <-> SLAVE sync: receiving 5484 bytes from master
7188:S 14 Mar 22:14:24.165 * MASTER <-> SLAVE sync: Flushing old data
7188:S 14 Mar 22:14:24.165 * MASTER <-> SLAVE sync: Loading DB in memory
7188:S 14 Mar 22:14:24.167 * MASTER <-> SLAVE sync: Finished with success

七、Redis哨兵是什么?

Redis提供了哨兵sentinel機制來監控Redis的性能,如果主數據庫宕機了,根據投票數自動將某一個從數據庫提升為主數據庫,繼續對外提供服務。

1、Redis哨兵的作用

  1. 主從監控,監控主從數據庫是否運行正常;

  2. 消息通知,哨兵可以將故障信息發送給客戶端;

  3. 故障轉移,如果master異常。哨兵會進行主備切換,將其中一個slave轉為master;

  4. 配置中心,客戶端通過連接哨兵獲取Redis服務集群的主節點信息;

2、使用哨兵的注意事項:

Redis主從復制與哨兵機制是什么

八、實戰演練

1、搭建3個哨兵服務器

監控Redis主從服務器,不存放數據。

Redis主從復制與哨兵機制是什么

2、sentinel.conf參數選項說明

bind 0.0.0.0
daemonize yes
protected-mode no
port 6391
logfile "/myredis/sentinel1.log"
pidfile /var/run/redis-sentinel6391.pid
dir /myredis
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel auth-pass mymaster 123456

Redis主從復制與哨兵機制是什么

設置要監控的master服務器,quorum表示至少有幾個哨兵認為客觀下線,同意故障轉移的法定票數,因此哨兵服務器一般為奇數個。

sentinel monitor <master-name> 127.0.0.1 6379 <quorum>

master服務器設置了密碼:

sentinel auth-pass <master-name> <password>

通過命令,完成哨兵sentinel的啟動,兩種方式,任選其一:

  1. redis-sentinel /path/to/sentinel.conf

  2. redis-server /path/to/sentinel.conf --sentinel

九、哨兵運行流程和選舉原理

當一個主從配置中的master失效后,sentinel會選舉出一個新的master用于接替原master的工作,其它slave服務器自動指向新master,實現數據同步。

1、主觀下線

指定多少毫秒之后,主節點沒有應答哨兵,此時哨兵會主觀上認為主節點已經下線。

sentinel down-after-millisecnds <master-name> <millisecnds>

2、客觀下線

多個哨兵sentinel進行投票,根據投票結果才能確認一個master客觀上已經宕機。

3、選舉master三步走:

(1)先選出一個master服務器

Redis主從復制與哨兵機制是什么

當master數據庫宕機后,各個哨兵sentinel節點會進行協商,先通過Raft算法選舉出一個領導者哨兵節點,再由領導者進行master的選舉。

根據Redis.conf中,優先級slave-priority或者replica-priority最高的從節點(數字越小優先級越高)。復制偏移位置offset最大的從節點;最小Run ID的從節點

(2)其它slave服務器連接到master服務器

執行slaveof no one命令會選舉出新的master,并通過slaveof命令將其它從節點成為新master服務器的從節點。

(3)如果舊master服務器恢復正常了,也要成為新master服務器的slave從服務器。

關于“Redis主從復制與哨兵機制是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Redis主從復制與哨兵機制是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿尔山市| 邯郸县| 涟水县| 中阳县| 宜兴市| 乡宁县| 阳原县| 桓仁| 龙州县| 邛崃市| 桑植县| 贵溪市| 无极县| 永靖县| 乐陵市| 涞源县| 嘉祥县| 通道| 柳河县| 荆门市| 平利县| 三都| 福鼎市| 新宁县| 红河县| 荔波县| 高清| 西和县| 玛纳斯县| 承德县| 青冈县| 五台县| 阿拉善左旗| 广灵县| 宜兰县| 保山市| 开封市| 东乡县| 崇礼县| 温泉县| 婺源县|