1.配置
- 建立複制

- 斷開複制
slaveof no one
- 安全性
從節點masterauth參數與主節點密碼保持一緻
- 隻讀
- 傳輸延遲
2.拓撲
- 一主一從:
故障轉移
- 一主多從:
讀寫分離
對比較耗時的讀指令在其中一台從節點執行
3.複制原理
3.1資料同步
- 複制偏移量
- 複制積壓緩沖區
- 主節點運作ID
- psync指令
3.2全量複制
第一步因為不知道id和offset,是以發送-1
注意:
除第一次外盡量避免全量複制
3.3部分複制
如果主節點的複制積壓緩沖區記憶體在這部分資料,則直接發送給從節點
1)當主從節點之間網絡出現中斷時,如果超過repl-timeout時間,主節點會認為從節點故障并中斷複制連接配接
2)因複制連接配接中斷,指令無法發送給從節點,不過主節點内部存在的複制積壓緩沖區,依然可以儲存最近一段時間的寫指令資料,預設最大緩存1MB。
4)當主從連接配接恢複後,由于從節點之前儲存了自身已複制的偏移量和主節點的運作ID。是以會把它們當作psync參數發送給主節點,要求進行部分複制操作
5)核對參數runId是否與自身一緻,如果一緻,說明之前複制的是目前主節點;之後根據參數offset在自身複制積壓緩沖區查找,如果偏移量之後的資料存在緩沖區中,則對從節點發送+CONTINUE響應
3.4心跳
主從節點在建立複制後,維護着長連接配接并彼此發送心跳指令
1)主節點預設每隔10秒對從節點發送ping指令,判斷從節點的存活性和連接配接狀态。如果超過repl-timeout配置的值(預設60秒),則判定從節點下線并斷開複制用戶端連接配接
2)從節點在主線程中每隔1秒發送replconf ack{offset}指令,給主節點上報自身目前的複制偏移量,如果從節點資料丢失,再從主節點的複制緩沖區中拉取丢失資料
3.5異步複制
主節點不但負責資料讀寫,還負責把寫指令同步給從節點。寫指令的發送過程是異步完成。
在主節點執行info replication指令,offset表示目前從節點的複制偏移量,master_repl_offset表示目前主節點的複制偏移量,兩者的內插補點就是目前從節點複制延遲量
4.開發運維中的問題
- 規避全量複制:
增大複制積壓緩沖區大小