1. 程式人生 > 其它 >Redis叢集環境搭建

Redis叢集環境搭建

技術標籤:redis非關係型資料庫redis

環境配置

只配置從庫,不用配置主庫!

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>