今天我們介紹redis的主從集群搭建方式。
redis主從搭建方式一般為一主多從的形式,即一臺主數(shù)據(jù)庫,多臺從數(shù)據(jù)庫。
主從的搭建相對比較簡單,本示例中使用三臺虛擬機(192.168.204.201,192.168.204.202,192.168.204.203),分別在這三臺機器上安裝好redis,本示例將201機器作為主數(shù)據(jù)庫,其他兩臺機器作為從數(shù)據(jù)庫。
1.解壓對應(yīng)的tar包
tar zxvf redis-2.8.3.tar.gz
2.進入解壓后的目錄
cd /usr/redis-2.8.3
3.編譯redis
make
4.在usr目錄下創(chuàng)建redis目錄,以方便我們的使用
cd /usr
mkdir redis
cd redis
mkdir bin
mkdir etc
5.分別將redis的程序redis-server和redis-cli復(fù)制到剛剛創(chuàng)建的bin目錄下
cp /usr/redis-2.8.3/src/redis-server /usr/redis/bin/
cp /usr/redis-2.8.3/src/redis-cli /usr/redis/bin/
6.將redis的配置文件reids.conf復(fù)制到剛剛創(chuàng)建的etc目錄下
cp /usr/redis-2.8.3/redis.conf /usr/redis/etc/
7.修改redis.conf配置文件
vi redis.conf
8.修改對應(yīng)配置
daemonize yes (三臺全部修改)
slaveof 192.168.204.201 6379 (從數(shù)據(jù)庫修改)
9.退出并保存
:wq!
10.在三臺機器上分別啟動redis服務(wù)
./redis-server /usr/redis/etc/redis.conf
./redis-cli
11.使用info命令查看對應(yīng)服務(wù)器的狀態(tài)


從對應(yīng)的信息我們可以清楚看出不同服務(wù)器的角色(role),以及對應(yīng)的主,從數(shù)據(jù)庫分別是哪臺機器,端口以及對應(yīng)機器的狀態(tài)。
至此,redis主從集群以及搭建完成。
此時我們在主數(shù)據(jù)庫中設(shè)置值,即可以在從數(shù)據(jù)庫中獲取到對應(yīng)的值


但是,如果我們在從數(shù)據(jù)庫上 設(shè)置值呢?

答案是否定的,因為從數(shù)據(jù)庫只是對外提供讀操作,并不能完成寫操作。
redis主從集群的目的就是實現(xiàn)數(shù)據(jù)庫的讀寫分離,提高服務(wù)器的負載能力,因此,主數(shù)據(jù)庫可以進行讀寫操作,但是從數(shù)據(jù)庫只能進行讀操作。
那你又會想,主從之間是如何進行同步的呢?

主從復(fù)制的過程如上如圖:
1.當一臺從數(shù)據(jù)庫啟動之后,會向其主數(shù)據(jù)庫發(fā)送一個sync命令
2.主數(shù)據(jù)庫接收到該命令之后,會執(zhí)行BGSAVE命令生成RDB文件并使用緩沖區(qū)記錄此后執(zhí)行的所有寫命令
3.當BGSAVE操作完成后,主數(shù)據(jù)庫會將快照文件和緩存的命令一并發(fā)送給從數(shù)據(jù)庫
4.從數(shù)據(jù)庫接收到快照文件和命令后,會載入該文件并執(zhí)行對應(yīng)的命令。
此時就完成了從數(shù)據(jù)庫啟動階段的主從復(fù)制。該階段被稱為全量復(fù)制
當全量復(fù)制完成之后,主數(shù)據(jù)庫每接收到一個寫請求,都會向從數(shù)據(jù)庫發(fā)送一個寫請求,該過程稱為增量復(fù)制。
此時,我們已經(jīng)搭建好了主從集群,也完成了主從復(fù)制,那么你又會想,如果主數(shù)據(jù)庫宕機了怎么辦?
這個時候你要做的就是鎮(zhèn)靜,不要盲目的重啟主數(shù)據(jù)庫,尤其是你的主數(shù)據(jù)庫沒有做持久化的時候。
如果的主數(shù)據(jù)庫沒有做持久化,那么 主數(shù)據(jù)庫的dump.rdb文件只是在某臺從數(shù)據(jù)庫發(fā)送sync命令時做快照留下來的,如果此時之間重啟主數(shù)據(jù)庫的話,勢必會丟失很多數(shù)據(jù)。
但是從數(shù)據(jù)庫中保留的是所有的數(shù)據(jù),因此可以在從數(shù)據(jù)庫中執(zhí)行SAVE操作,再將從數(shù)據(jù)庫的dump.rdb復(fù)制到主數(shù)據(jù)庫,再進行重啟,此時主數(shù)據(jù)庫會加載所有數(shù)據(jù)。
自己練習(xí)的過程中,可以將三臺服務(wù)器的防火墻關(guān)掉
centos6 查看防火墻狀態(tài)
service iptables status
關(guān)閉防火墻
service iptables stop