Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式
Redis運(yùn)維和開發(fā)學(xué)習(xí)筆記(5) 主從復(fù)制和sentinel哨兵模式
主從復(fù)制
將主節(jié)點(diǎn)的數(shù)據(jù)改變同步給從節(jié)點(diǎn)
- 作用
- 備份數(shù)據(jù)
- 讀寫分離
- 存在的問題:
- 手動(dòng)干預(yù)切主等操作
- 主節(jié)點(diǎn)的寫能力受到單機(jī)限制
- 主節(jié)點(diǎn)的存儲(chǔ)能力受到單機(jī)限制
主從模式的故障恢復(fù)
哨兵
blog
拓?fù)浣Y(jié)構(gòu)圖
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-qDHbOoMx-1572053628652)(media/15653345582593/%206.2%20%E6%8B%93%E6%89%91%EF%BC%88171%EF%BC%89.png)]
復(fù)制配置
復(fù)制過程
命令:slaveof slaveof 127.0.0.1:6379
- 執(zhí)行slaveof后會(huì)打印日志
- 每秒運(yùn)行定時(shí)任務(wù)維護(hù)復(fù)制邏輯,直到成功;或者slaveof no one取消復(fù)制
- 連接失敗:Error condition on socket for SYNC:{socket_error_reason}
5. 主節(jié)點(diǎn):如果配置了requirepass,就需要認(rèn)證
6. 從節(jié)點(diǎn):配置相應(yīng)的masterauth。
7. 上面的操作已經(jīng)把數(shù)據(jù)同步完了,后面就持續(xù)把寫命令發(fā)送給從庫
數(shù)據(jù)同步
復(fù)制偏移量
- 主節(jié)點(diǎn)在處理完畢寫入命令之后,會(huì)把命令的字節(jié)長度做累加記錄,統(tǒng)計(jì)信息在master_repl_offset
- 對比主從節(jié)點(diǎn)的復(fù)制偏移量,判斷是否數(shù)據(jù)一致
復(fù)制積壓緩沖區(qū)(repl_backlog)
-
保存在主節(jié)點(diǎn)上的一個(gè)固定長度的隊(duì)列,默認(rèn)為1M
-
保存最近已復(fù)制的數(shù)據(jù),用于部分復(fù)制和復(fù)制命令丟失的數(shù)據(jù)補(bǔ)救
-
參數(shù)含義
repl_backlog_active:1開啟復(fù)制緩沖區(qū) repl_backlog_size:1048576 緩沖區(qū)最大長度 repl_backlog_first_byte_offset:2 起始偏移量,計(jì)算當(dāng)前緩沖區(qū) 可用范圍 repl_backlog_histlen:969335 已保存數(shù)據(jù)的有效長度
參數(shù)信息
主庫(info replication)
127.0.0.1:7001> info replication # Replication role:master connected_slaves:1 slave0:ip=127.0.0.1,port=7004,state=online,offset=969336,lag=1 master_repl_offset:969336 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:969335從庫(info replication)
127.0.0.1:7004> info replication # Replication role:slave master_host:127.0.0.1 master_port:7001 master_link_status:up master_last_io_seconds_ago:3 master_sync_in_progress:0 slave_repl_offset:969350 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0主節(jié)點(diǎn)運(yùn)行id
節(jié)點(diǎn)啟動(dòng)后動(dòng)態(tài)分配的ID,用于唯一識(shí)別節(jié)點(diǎn),ID變更后會(huì)發(fā)生全量復(fù)制
重啟后會(huì)改變,需要使用debug reload命令重啟并保持ID不變(命令會(huì)阻塞當(dāng)前節(jié)點(diǎn)主線程),阻塞期間先生成rdb快照,并清空數(shù)據(jù)后再加載rdb文件。對于大數(shù)據(jù)量的主節(jié)點(diǎn)和無法容忍阻塞的應(yīng)用場景慎用
- 參數(shù)
psync(178)
- 從節(jié)點(diǎn)使用psync命令完成部分復(fù)制和全量復(fù)制功能。
總覽圖
總結(jié)
以上是生活随笔為你收集整理的Redis运维和开发学习笔记(5) 主从复制和sentinel哨兵模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 试管婴儿怎么补充营养
- 下一篇: Redis运维和开发学习笔记(6) 监控