redis主從複製及配置
阿新 • • 發佈:2021-12-24
!資料的複製都是單向的,只能從主節點到從節點 一個爸爸有多個兒子,但是一個兒子不能有多個爸爸
主機以寫為主,從機以讀為主
主從複製 ,讀寫 分離, 80%的情況下都在讀 減緩伺服器壓力
預設情況下 每臺redis伺服器都是主節點
主要作用
-
陣列冗餘 只從複製實現了資料的熱備份 ,是持久化之外的一種資料冗餘方式
-
故障恢復:
-
負載均衡:
-
高可用基石:
一般在專案中只用一臺redis是不行的(宕機 一主二從)
原因:
-
單個redis伺服器會發生單點故障 並且一臺伺服器需要處理所有的請求負載 壓力大
-
單個redis伺服器記憶體容量有限, 單個redis伺服器最大用記憶體容量不應該超過20G
主從配置
1.在三臺伺服器上進行安裝Redis
安裝如下連結,三臺伺服器配置都一樣即可,
https://www.cnblogs.com/9080dlb/p/15712625.html
2.從機配置
找到啟動配置檔案
配置完從機儲存退出,啟動服務
[root@iZbp1e0fmgc5gof1ly9cmlZ bin]# redis-server myconfig/redis.conf [root@iZbp1e0fmgc5gof1ly9cmlZ bin]# redis-cli -p 6379 127.0.0.1:6379> AUTH Amxxxxx OK 127.0.0.1:6379> ping PONG127.0.0.1:6379>
此時就已經完成了主從複製,只需要配置從機就行了
確認完成
####從機資訊 127.0.0.1:6379> info replication #從機檢視資訊 # Replication role:slave #角色從機 master_host:192.168.123.12 #主機的ip master_port:6379 master_link_status:up master_last_io_seconds_ago:6 master_sync_in_progress:0 slave_read_repl_offset:1834 slave_repl_offset:1834 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1834 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1807 repl_backlog_histlen:28 ################ ####主機資訊 127.0.0.1:6379> info replication #檢視主機資訊 # Replication role:master #角色主機 connected_slaves:1 #從機節點有1個,如果有多個從機就顯示從機數量 slave0:ip=47.97.32.153,port=6379,state=online,offset=2114,lag=0 master_failover_state:no-failover master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:2114 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:2114
第二種主從複製方法(一般不用這樣)
127.0.0.1:6379> slaveof 123.222.555.22 6379
OK
#如果有密碼就配置密碼,此處略
127.0.0.1:6379> info replication #認主完成就看資訊 # Replication role:slave #角色從機 master_host:123.222.555.22 #主機 master_port:6379 master_link_status:up master_last_io_seconds_ago:5 master_sync_in_progress:0 slave_read_repl_offset:0 slave_repl_offset:0 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:be3671d1fcf8663e0951f9ece58723708e1e3e27 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
總結
配置完就行了
-
主機可以寫 從機不能寫只能讀
-
主機中的所有資訊都會被從機儲存
-
如果老大死了, 小弟還是小弟 但是沒有寫操作了
-
老大活了,小弟自動連線
-
用命令列配置的, 小弟死了再復活就會變成主機(變回原來安裝好的樣子)
-
再變回小弟,立馬能拿到大哥的資料
-
原理: 小弟聯絡到大哥會發同步命令 ,大哥知道小弟回來訊息 啟動後臺的存檔程序,同時把所有的資料都放進去打包完成程序後, 把所有東西給小弟,完成一次同步全量複製
-
增量複製 平時老大收集到的發給小弟
-
只要重新連線老大就完成一次全量複製 自動執行
-
思考 1 ---->2<====> 3 人體蜈蚣式的
經過測試, 中間的伺服器不能寫入, 但是1號寫的東西2號和3號都能拿到
老大如果死了,選一個小弟當老大 篡奪皇位 老大回來也沒用
slaveof no one #告訴當前從機沒有老大了!你可以當老大了!!!