Redis server 主從復(fù)制配置實(shí)現(xiàn)
0. 前言
在Redis運(yùn)維篇的第5.6章節(jié)中,將討論Redis服務(wù)器的主從復(fù)制配置。在開(kāi)始之前,讓先來(lái)了解一下主從復(fù)制的概念和作用。
主從復(fù)制是指將一個(gè)Redis服務(wù)器的數(shù)據(jù)復(fù)制到其他Redis服務(wù)器的過(guò)程。在主從復(fù)制中,一個(gè)Redis服務(wù)器充當(dāng)主服務(wù)器,而其他Redis服務(wù)器則充當(dāng)從服務(wù)器。主服務(wù)器負(fù)責(zé)接收寫(xiě)操作,并將這些寫(xiě)操作傳播到所有從服務(wù)器。從服務(wù)器則負(fù)責(zé)接收主服務(wù)器傳播的寫(xiě)操作,并將這些寫(xiě)操作應(yīng)用到自己的數(shù)據(jù)集中。
主從復(fù)制的主要作用是提高系統(tǒng)的可用性和性能。通過(guò)將數(shù)據(jù)復(fù)制到多個(gè)服務(wù)器上,即使主服務(wù)器發(fā)生故障,從服務(wù)器仍然可以提供讀取服務(wù),從而保證系統(tǒng)的可用性。此外,主從復(fù)制還可以將讀操作分?jǐn)偟蕉鄠€(gè)服務(wù)器上,從而提高整個(gè)系統(tǒng)的讀取性能。
在接下來(lái)的內(nèi)容中,將詳細(xì)講解如何進(jìn)行Redis服務(wù)器的主從復(fù)制配置和示例。
1. 配置方式
步驟1: 準(zhǔn)備硬件和網(wǎng)絡(luò)
確保你的主機(jī)和從機(jī)的硬件資源符合運(yùn)行Redis的要求。主服務(wù)器和從服務(wù)器應(yīng)該通過(guò)可靠的網(wǎng)絡(luò)連接,確保兩者之間的通信穩(wěn)定且延遲較低。
這里我使用3臺(tái)虛擬機(jī)來(lái)搭建一下,主服務(wù)器的ip為192.168.10.1,兩個(gè)從服務(wù)器的ip分別為192.168.10.2和192.168.10.2,端口號(hào)都為6379,具體的配置如下
步驟2: 安裝Redis
根據(jù)你的操作系統(tǒng),從Redis官網(wǎng)下載安裝包或使用相應(yīng)的包管理器進(jìn)行安裝。
對(duì)于基于RPM的系統(tǒng)(如CentOS):
sudo yum install redis
對(duì)于基于Debian的系統(tǒng)(如Ubuntu):
sudo apt-get update sudo apt-get install redis-server
對(duì)于macOS(使用Homebrew):
brew install redis
我的是Centos 7192.168.10.1
192.168.10.2
192.168.10.3
分別安裝完redis 并開(kāi)放防火墻6379端口號(hào)
有兩種方式,看你的操作系統(tǒng)的支持。
- 使用firewall
# 檢查當(dāng)前防火墻規(guī)則: sudo firewall-cmd --list-all # 如果沒(méi)有特定規(guī)則,可以使用以下命令開(kāi)放端口 6379: sudo firewall-cmd --add-port=6379/tcp --permanent # 重新加載防火墻規(guī)則: sudo firewall-cmd --reload
- 或者使用iptables
sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
分別修改三臺(tái)服務(wù)器的配置如下
daemonize yes # 綁定的主機(jī)地址,這里注釋掉,開(kāi)放ip連接 #bind 127.0.0.1 logfile "redis.log" requirepass 123456
步驟3: 配置主服務(wù)器的Redis
編輯Redis配置文件(通常位于/etc/redis/redis.conf
或/usr/local/etc/redis.conf
),進(jìn)行以下設(shè)置:
# 啟用AOF持久化模式,以保證數(shù)據(jù)安全 appendonly yes # 如果需要密碼認(rèn)證,取消以下注釋并設(shè)置密碼 requirepass 123456
重啟Redis服務(wù)來(lái)應(yīng)用新的配置:
sudo service redis-server restart
或在系統(tǒng)中使用對(duì)應(yīng)的命令,如systemctl
等。
步驟4: 配置從服務(wù)器的Redis
在從服務(wù)器上,同樣編輯Redis配置文件。添加以下設(shè)置:
# 指定主服務(wù)器的地址和端口 slaveof 192.168.10.1 6379 # 如果主服務(wù)器設(shè)置了密碼,配置從服務(wù)器的masterauth以匹配主服務(wù)器的密碼 masterauth 123456 # 設(shè)置從服務(wù)器為只讀模式 slave-read-only yes # 設(shè)置從服務(wù)器與主服務(wù)器斷開(kāi)連接時(shí)的超時(shí)時(shí)間,單位為秒 repl-timeout 60 # 設(shè)置從服務(wù)器向主服務(wù)器發(fā)送PING的頻率,單位為秒 repl-ping-slave-period 10
重啟從服務(wù)器的Redis服務(wù)以應(yīng)用新的配置。
步驟5: 測(cè)試復(fù)制功能
在主服務(wù)器上執(zhí)行Redis命令,添加一些數(shù)據(jù):
redis-cli -a 123456 set key1 "value1"
然后,在從服務(wù)器上執(zhí)行:
redis-cli -a 123456 get key1
如果返回的是"value1",表示復(fù)制功能正常。
步驟6: 監(jiān)控復(fù)制狀態(tài)
使用以下命令在主服務(wù)器和從服務(wù)器上查看復(fù)制的狀態(tài)和信息:
redis-cli -a 123456 info replication
會(huì)看到類(lèi)似于以下的信息:
192.168.10.1:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=192.168.10.2,port=6379,state=online,offset=700,lag=0 slave1:ip=192.168.10.3,port=6379,state=online,offset=700,lag=0 master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:700 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:700 192.168.10.2:6379> info replication # Replication role:slave master_host:192.168.10.1 master_port:6379 master_link_status:up master_last_io_seconds_ago:3 master_sync_in_progress:0 slave_repl_offset:854 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:854 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:57 repl_backlog_histlen:798 192.168.10.3:6379> info replication # Replication role:slave master_host:192.168.10.1 master_port:6379 master_link_status:up master_last_io_seconds_ago:6 master_sync_in_progress:0 slave_repl_offset:854 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:b80a4720c0001efb62940f5ad6abaf9cdaf7a813 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:854 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:854
2. 參考文檔
https://redis.io/docs/management/replication/
到此這篇關(guān)于Redis server 主從復(fù)制配置實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Redis server 主從復(fù)制配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis快速表、壓縮表和雙向鏈表(重點(diǎn)介紹quicklist)
這篇文章主要介紹了Redis快速表、壓縮表和雙向鏈表(重點(diǎn)介紹quicklist),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Redis 數(shù)據(jù)庫(kù)忘記密碼找回或重置的解決方法
對(duì)于 Redis 數(shù)據(jù)庫(kù),如果忘記了密碼,可以通過(guò)密碼重置來(lái)找回密碼,今天通過(guò)本文給大家分享Redis 數(shù)據(jù)庫(kù)忘記密碼找回或重置的解決方法,感興趣的朋友一起看看吧2024-01-01Caffeine實(shí)現(xiàn)類(lèi)似redis的動(dòng)態(tài)過(guò)期時(shí)間設(shè)置示例
這篇文章主要為大家介紹了Caffeine實(shí)現(xiàn)類(lèi)似redis的動(dòng)態(tài)過(guò)期時(shí)間示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Redis特殊數(shù)據(jù)類(lèi)型Geospatial地理空間
這篇文章主要為大家介紹了Redis特殊數(shù)據(jù)類(lèi)型Geospatial地理空間,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05基于Redis的分布式鎖的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了基于Redis的分布式鎖的簡(jiǎn)單實(shí)現(xiàn)方法,Redis官方給出兩種思路,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10基于Redis延遲隊(duì)列的實(shí)現(xiàn)代碼
在生活中很多時(shí)候都會(huì)用到延遲隊(duì)列,本文基于Redis延遲隊(duì)列的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離詳解
Redis的主從架構(gòu),能幫助我們實(shí)現(xiàn)讀多,寫(xiě)少的情況,下面這篇文章主要給大家介紹了關(guān)于Redis如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫(xiě)分離的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03