主從複製之複製原理
一主二從:預設情況下,每臺redis伺服器都是主節點:一般情況下只用配置從機就可以
認主機: 一主(79)二從(80,81)
從機6380:
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379 #slaveof host port 認主機命令
OK
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1 #主機資訊
master_port:6379 #當前角色從機
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:0
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:56bf427481b8a841b169f9534fc1847f920e46cb
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0
主機6379:
# Replication
role:master
connected_slaves:1 #多了從機配置
slave0:ip=127.0.0.1,port=6380,state=online,offset=28,lag=0
master_replid:56bf427481b8a841b169f9534fc1847f920e46cb
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28
真實的主從配置應該在配置檔案中配置,這樣是永久的,使用命令是暫時的
從機配置檔案中修改下面兩個:
replicaof 主機ip 主機埠
masterauth 主機密碼
細節:
主機可以寫,從機不可以寫只能讀!主機中的所有資訊和資料,都會被從機儲存
主機可讀可寫多用於寫
測試:主機斷開連線,從機依舊連線到主機的,但是沒有寫操作,如果主機回來了,從機依舊可以獲取到主機的資訊
如果使用命令列來配置主從,如果從機重啟,從機就會變成主機!只要變為從機,馬上就可以獲取主機的值
複製原理:
Slave啟動成功連線到master後會傳送一個sync同步命令
Master接到命令,啟動後臺的存檔程序,同時收集所有接收到的用於修改資料集命令,在後臺程序執行完畢之後,master將傳送整個資料檔案到slave,並完成一次完全同步
全量複製:而slave服務在接收到資料庫檔案資料後,將其存檔並載入到記憶體中
增量複製:Master繼續將新的所有收集到的修改命令依次傳給slave,完成同步
但是隻要重新連線master,一次完全同步(全量複製)將被自動執行