Redis叢集環境搭建
阿新 • • 發佈:2021-02-07
環境配置
只配置從庫,不用配置主庫!
127.0.0.1:6379> info replication #檢視當前庫的資訊 # Replication role:master #角色 master connected_slaves:0 #沒有從機 master_replid:3eb9dce4127a81ab2991e3c26df4f5bd4efec166 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
複製3個配置檔案,然後修改對應的資訊
[[email protected] kconfig]# cp redis.conf redis80.conf
[[email protected] kconfig]# cp redis.conf redis81.conf
[[email protected] kconfig]# ls
redis79.conf redis80.conf redis81.conf redis.conf
[[email protected] kconfig]# vim redis79.conf
[[email protected] kconfig]# vim redis80.conf
[[email protected] kconfig]# vim redis81.conf
1、埠號
2、pid名字
3.log檔名
4、dump.rdp名字
修改完畢之後,啟動我們的3個redis伺服器,可以通過程序資訊檢視!
[[email protected] bin]# redis-server kconfig/redis79.conf
[[email protected] bin]# ls
6379.log redis-benchmark redis-cli
dump.rdb redis-check-aof redis-sentinel
kconfig redis-check-rdb redis-server
[ [email protected] bin]# redis-server kconfig/redis80.conf
[[email protected] bin]# redis-server kconfig/redis81.conf
[[email protected] bin]# ps -ef|grep redis
root 8549 1 0 18:32 ? 00:00:00 redis-server 127.0.0.1:6379
root 8556 1 0 18:33 ? 00:00:00 redis-server 127.0.0.1:6380
root 8561 1 0 18:33 ? 00:00:00 redis-server 127.0.0.1:6381
root 8567 7821 0 18:33 pts/0 00:00:00 grep --color=auto redis
一主(79)二從(80,81)
127.0.0.1:6380> SLAVEOF 127.0.0.1 6379 #SLAVEOF host 6379 找誰當自己的老大
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:1
master_sync_in_progress:0
slave_repl_offset:42
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:e9c264360719d9c6a2c5cf12e56992c1dbdab2b5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:42
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:42
#在主機中檢視!
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1 #從機個數
slave0:ip=127.0.0.1,port=6380,state=online,offset=98,lag=0 #從機資訊
master_replid:e9c264360719d9c6a2c5cf12e56992c1dbdab2b5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98
細節:
主機可以寫,從機不能寫只能讀!主機中的所有資訊和資料,都會被從機儲存!
從機只能讀取內容!
測試:主機斷開連線,從機依舊連線到主機,但是沒有寫操作,這個時候,主機如果回來了,從機依舊可以直接獲取到主機的資訊!
如果是使用命令列,來配置的主從,這個時候如果重啟了,就會變回主機!只要變為從機。立馬就會從主機中獲取值!
複製原理:
Slave(從機)啟動成功連線到master(主機)後會傳送一個syn同步命令
Master接到命令。啟動後臺的存檔程序,同時手機所有接受到的用於修改資料集命令,在後臺程序完畢之後,master將傳送整個資料檔案到slave,並完成一次同步。
全量複製:而slave服務在接受到資料庫檔案資料後,將期存檔並載入到記憶體中。
增量複製:Master繼續將新的所有收集到的修改命令依次傳給slave,完成同步但是隻要重新連線master,一次完全同步(全量複製)將西東執行!我們的資料一定可以在從機中看到!
層層鏈路:
上一個M鏈路下一個是!
這時候也可以完成我們的主從複製!
如果主機關閉,第二個從機可以出來當主機,我們可以使用SLAVEOF no one讓自己變成主機!其他的節點就可以手動連線到最新的這個主節點。
127.0.0.1:6380> SLAVEOF no one
OK
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6381,state=online,offset=3046,lag=1
master_replid:e7050720d2d65675f5dba40913aee2f61dfaba4b
master_replid2:025477c179f1084d0538d319b6e2d169359ae554
master_repl_offset:3046
second_repl_offset:3033
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:3046
127.0.0.1:6380>