一、原理
成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、wap網(wǎng)站建設(shè)(手機版網(wǎng)站建設(shè))、響應(yīng)式網(wǎng)站設(shè)計、程序開發(fā)、網(wǎng)站優(yōu)化、微網(wǎng)站、微信小程序開發(fā)等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了豐富的網(wǎng)站設(shè)計制作、成都做網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等多方位專業(yè)化運作于一體。Redis的主從復制功能非常強大,一個master可以擁有多個slave,而一個slave又可以擁有多個slave,如此下去,形成了強大的多級服務(wù)器集群架構(gòu)。下面是關(guān)于redis主從復制的一些特點:
1.master可以有多個slave。
2.除了多個slave連到相同的master外,slave也可以連接其他slave形成圖狀結(jié)構(gòu)。
3.主從復制不會阻塞master。也就是說當一個或多個slave與master進行初次同步數(shù)據(jù)時,master可以繼續(xù)處理client發(fā)來的請求。相反slave在初次同步數(shù)據(jù)時則會阻塞不能處理client的請求。
4.主從復制可以用來提高系統(tǒng)的可伸縮性,我們可以用多個slave 專門用于client的讀請求,比如sort操作可以使用slave來處理。也可以用來做簡單的數(shù)據(jù)冗余。
5.可以在master禁用數(shù)據(jù)持久化,只需要注釋掉master 配置文件中的所有save配置,然后只在slave上配置數(shù)據(jù)持久化。
二、主從復制過程
當設(shè)置好slave服務(wù)器后,slave會建立和master的連接,然后發(fā)送sync命令。無論是第一次同步建立的連接還是連接斷開后的重新連 接,master都會啟動一個后臺進程,將數(shù)據(jù)庫快照保存到文件中,同時master主進程會開始收集新的寫命令并緩存起來。后臺進程完成寫文件 后,master就發(fā)送文件給slave,slave將文件保存到磁盤上,然后加載到內(nèi)存恢復數(shù)據(jù)庫快照到slave上。接著master就會把緩存的命 令轉(zhuǎn)發(fā)給slave。而且后續(xù)master收到的寫命令都會通過開始建立的連接發(fā)送給slave。從master到slave的同步數(shù)據(jù)的命令和從 client發(fā)送的命令使用相同的協(xié)議格式。當master和slave的連接斷開時slave可以自動重新建立連接。如果master同時收到多個 slave發(fā)來的同步連接命令,只會使用啟動一個進程來寫數(shù)據(jù)庫鏡像,然后發(fā)送給所有slave。
三、配置與應(yīng)用
1)redis安裝
(1)下載redis
# wget http://download.redis.io/releases/redis-3.0.7.tar.gz(2)解壓安裝
# tar zxvf redis-3.0.7.tar.gz # cd redis-3.0.7 # make PREFIX=/data/server/redis install(3)配置redis
①:創(chuàng)建redis配置文件目錄并拷貝配置文件至此目錄
# mkdir -p /data/server/redis/etc # cp redis.conf /data/server/redis/etc②:設(shè)置redis運行方式為后臺運行
# sed -i 's/daemonize no/daemonize yes/g' /data/server/redis/etc/redis.conf③:下載redis init 啟動文件至 init.d 目錄下,并賦予權(quán)限.
# wget -c http://soft.vpser.net/lnmp/ext/init.d.redis -O /etc/init.d/redis # chmod 755 /etc/init.d/redis④:創(chuàng)建redis日志目錄及日志存放文件
# mkdir /data/server/redis/logs # touch /data/server/redis/logs/redis.log⑤:創(chuàng)建pid目錄與數(shù)據(jù)存儲目錄
# mkdir /data/server/redis/run # mkdir /data/server/redis/db⑥:修改 vim /etc/init.d/redis 啟動文件中文件path
2)redis主從同步配置
(1)Master服務(wù)器端:
# grep -v '^#' redis.conf |grep -v '^$' daemonize yes pidfile /data/server/redis/run/redis.pid #定義端口 port 1234 #綁定IP bind 10.10.10.2 timeout 300 loglevel notice #指定日志目錄 logfile /data/server/redis/logs/redis.log databases 16 #配置持久化(rdb模式) save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes #定義數(shù)據(jù)文件和目錄 dbfilename master.rdb dir /data/server/redis/db slave-serve-stale-data yes slave-read-only yes slave-priority 100 appendonly no appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb60 client-output-buffer-limit pubsub 32mb 8mb 60(2)slave服務(wù)器端
# grep -v '^#' redis.conf |grep -v '^$' daemonize yes pidfile /data/server/redis/run/redis.pid port 1234 bind 10.10.10.3 timeout 300 loglevel notice logfile /data/server/redis/logs/redis.log databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename slave.rdb dir /data/server/redis/db slaveof 10.10.10.2 1234 #指定master的地址 slave-serve-stale-data yes slave-read-only yes slave-priority 100 appendonly no appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb60 client-output-buffer-limit pubsub 32mb 8mb 60(3)啟動redis服務(wù)
Master:
# /data/server/redis/bin/redis-server /data/server/redis/etc/redis.conf # tail -fn100 /data/server/redis/logs/redis.log //檢查日志是否有報錯Slave:
# /data/server/redis/bin/redis-server /data/server/redis/etc/redis.conf # tail -fn100 /data/server/redis/logs/redis.log //檢查日志是否有報錯(4)檢查redis主從同步
master:
redis-m > set data zhangsan redis-m > get dataslave:
redis-s > get data注:由于在配置文件中配置了slave-read-only yes,因此從節(jié)點處于只讀狀態(tài),無法對數(shù)據(jù)庫進行操作和更改.
附件:http://down.51cto.com/data/2368174另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。