iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Software Development

Redis還在學系列 第 7

Day7 Redis組態檔設定-REPLICATION

Redis.config

REPLICATION

  • replicaof

透過非同步方式進行Master與Replica進行資料同步,由Replica進行設定Master的IP與Port。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658mrG5praJH9.png

# 預設
# replicaof <masterip> <masterport>

# 需與Master 127.0.0.1 6379 進行同步 
replicaof 127.0.0.1 6379
  • masterauth

當同步Master有設定"requirepass"時,需要一起綁定驗證密碼。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658Qk9ZOyQtsw.png

# 預設
# masterauth <master-password>
  • masteruser

Redis6.0 支援設定同步Master中設定的用戶名。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658DWEoTTv9WJ.png

# 預設
# masteruser <username>
  • replica-serve-stale-data

當Master與Replica正在同步資料時或是失去中間的連線時,Replica是否還可以提供給用戶端連線使用,即便資料可能會與Master不一致。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658ljrKWfUgiN.png

# 預設
# 可以提供給用戶端連線使用
replica-serve-stale-data yes
  • replica-read-only

Replica是否只允許進行讀取操作而不能寫入。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658uWoK05aghV.png

# 預設
# 只讀不可以寫入
replica-read-only yes
  • repl-diskless-sync

是否需要開啟無磁碟化同步資料,減少使用磁碟避免因為IO問題造成效能瓶頸。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658HHALaAnH4G.png

# 預設
# 預設no則快照資料會先落地到Master的dump.rdb後在同步到Replica。
repl-diskless-sync no

# 如果是yes,則資料在快照時不會先落地到Master的磁碟,而直接同步到Replica,需搭配repl-diskless-sync-delay一起配置使用。
repl-diskless-sync yes
  • repl-diskless-sync-delay

Master快照同步前等待與Replica進行連線,以利後續同步,但時間越長代表Master與Replica差異越大。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658ZdaxdzuZed.png

# 預設
repl-diskless-sync-delay 5
  • repl-diskless-load

Replica載入資料配置。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658xuFeAS9oi5.png

# 預設
# 資料會先同步到rdb後再處道道記憶體
repl-diskless-load disabled

# 記憶體資料為空時,會直接處理到記憶體內,不用寫入rdb。不為空則需要寫入rdb後處理到記憶體中
repl-diskless-load on-empty-db

# 直接處理到記憶體中,不寫入rdb檔案,並且保留了原來的資料,實際上記憶體會有兩份資料,當記憶體不足時,會out of memory的問題
repl-diskless-load swapdb
  • repl-ping-replica-period

心跳多久確認一次。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658rPmNUDQZdB.png

# 預設
# 10秒一次PING
# repl-ping-replica-period 10
  • repl-timeout

設定timeout時間,注意不可以設定小於repl-ping-replica-period,否則很容易因為網路延遲造成中斷。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658VZYe2JNjrZ.png

# 預設
# 60秒
# repl-timeout 60
  • repl-disable-tcp-nodelay

是否需要即時傳送Master與Replica同步資料。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658L6TDT2i9Mb.png

# 預設
# Linux核心將使用大概40毫秒的時候快取資料,一次性將盡可能多的資料傳送出去
repl-disable-tcp-nodelay no

# 有資料就馬上送,不管封包大小
repl-disable-tcp-nodelay yes
  • repl-backlog-size

設定aster記憶體緩衝區大小給同步Replica使用。

https://ithelp.ithome.com.tw/upload/images/20210922/201116587SVVBTVfx8.png

# 預設
# repl-backlog-size 1mb
  • repl-backlog-ttl

設定多久沒有Replica則釋放記憶體緩衝區。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658dmUXw3ydUE.png

# 預設
# repl-backlog-ttl 36000

# 永遠不釋放
repl-backlog-ttl 0
  • replica-priority

設定Replica優先權,越小優先權越大。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658a9A1NJf5Iv.png

# 預設
replica-priority 100

# 不移轉
replica-priority 0
  • replica-announced

Replica是否要宣告排除,此設定不會影響replica-priority。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658ZXMRZNPGLo.png

# 預設
# replica-announced yes
  • min-replicas-to-write / min-replicas-max-lag

設定至少要有多少個Replica與延遲小於多少時間才可以讓Master提供用戶端進行操作。

https://ithelp.ithome.com.tw/upload/images/20210922/201116585bq1MQh8gY.png

# 預設
# min-replicas-to-write 3
# min-replicas-max-lag 10
  • replica-announce-ip / replica-announce-port

宣告排除的Replica Ip和Port。

https://ithelp.ithome.com.tw/upload/images/20210922/20111658OOAjgssnPI.png

# 預設
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234

上一篇
Day6 Redis組態檔設定-SNAPSHOT
下一篇
Day8 Redis組態檔設定-KEYS TRACKING/SECURITY/CLIENT
系列文
Redis還在學30

尚未有邦友留言

立即登入留言