1. 程式人生 > 其它 >redis主從複製及配置

redis主從複製及配置

!資料的複製都是單向的,只能從主節點到從節點 一個爸爸有多個兒子,但是一個兒子不能有多個爸爸

主機以寫為主,從機以讀為主

主從複製 ,讀寫 分離, 80%的情況下都在讀 減緩伺服器壓力

預設情況下 每臺redis伺服器都是主節點

主要作用

  1. 陣列冗餘 只從複製實現了資料的熱備份 ,是持久化之外的一種資料冗餘方式

  2. 故障恢復:

  3. 負載均衡:

  4. 高可用基石:

一般在專案中只用一臺redis是不行的(宕機 一主二從)

原因:

  1. 單個redis伺服器會發生單點故障 並且一臺伺服器需要處理所有的請求負載 壓力大

  2. 單個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
PONG
127.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. 如果老大死了, 小弟還是小弟 但是沒有寫操作了

  4. 老大活了,小弟自動連線

  5. 用命令列配置的, 小弟死了再復活就會變成主機(變回原來安裝好的樣子)

  6. 再變回小弟,立馬能拿到大哥的資料

    • 原理: 小弟聯絡到大哥會發同步命令 ,大哥知道小弟回來訊息 啟動後臺的存檔程序,同時把所有的資料都放進去打包完成程序後, 把所有東西給小弟,完成一次同步全量複製

    • 增量複製 平時老大收集到的發給小弟

    • 只要重新連線老大就完成一次全量複製 自動執行

思考 1 ---->2<====> 3 人體蜈蚣式的

經過測試, 中間的伺服器不能寫入, 但是1號寫的東西2號和3號都能拿到

老大如果死了,選一個小弟當老大 篡奪皇位 老大回來也沒用

slaveof no one #告訴當前從機沒有老大了!你可以當老大了!!!