Redis 主從複製

來源:互聯網
上載者:User

標籤:

Master 配置:

wget http://redis.googlecode.com/files/redis-2.4.5.tar.gz
tar zxvf redis-2.4.5.tar.gz
cd redis-2.4.5
make
make PREFIX=/usr/local/redis install                                             #設定redis服務類別目錄
mkdir /etc/redis                                                                           #建立redis主設定檔目錄
mkdir -p /var/lib/redis
cp redis.conf  /etc/redis/
cd /etc/redis/
cp redis.conf redis.conf.bak
vim /etc/redis/redis.conf

###Master config###
###General 配置
daemonize yes                                                                              #使用daemon 方式運行程式,預設為非daemon方式運行
pidfile /var/run/redis.pid                                                                 #pid檔案位置
port 6379                                                                                    #使用預設連接埠
timeout 30                                                                                 # client 端空閑中斷連線的時間
loglevel warning                                                                          #日誌記錄層級,預設是notice,我這邊使用warning,是為了監控日誌方便。使用warning後,只有發生警示才會產生日誌,這對於通過判斷記錄檔是否為空白來監控警示非常方便。
logfile /var/log/redis.log                                                                #日誌產生的位置
databases 16                                                                            #預設是0,也就是只用1 個db,我這邊設定成16,方便多個應用使用同一個redis server。使用select n 命令可以確認使用的redis db ,這樣不同的應用即使使用相同的key也不會有問題。

###下面是SNAPSHOTTING持久化方式的策略。為了保證資料相對安全,在下面的設定中,更改越頻繁,SNAPSHOTTING越頻繁,也就是說,壓力越大,反而花在持久化上的資源會越多。所以我選擇了master-slave模式,並在master關掉了SNAPSHOTTING。
#save 900 1                                                                                #在900秒之內,redis至少發生1次修改則redis抓快照到磁碟
#save 300 100                                                                             #在300秒之內,redis至少發生100次修改則redis抓快照到磁碟
#save 60 10000                                                                           #在60秒之內,redis至少發生10000次修改則redis抓快照到磁碟
rdbcompression yes                                                                       #使用壓縮
dbfilename dump.rdb                                                                   #SNAPSHOTTING的檔案名稱
dir ./                                                                                           #SNAPSHOTTING檔案的路徑
###REPLICATION 設定,
#slaveof                                                                                     #如果這台機器是台redis slave,可以開啟這個設定。如果使用master-slave模式,我就會在master上把SNAPSHOTTING關了,這樣可以不用在master上做持久化,而是在slave上做,這樣可以大大提高master 記憶體使用量率和系統效能。
#slave-serve-stale-data yes  #如果slave 無法與master 同步,是否還可以讀
### SECURITY 設定
#requirepass foobared                                                                   #redis效能太好,用個passwd 意義不大
#rename-command FLUSHALL ""                                                   #可以用這種方式關掉非常危險的命令
###LIMIT 設定
###APPEND ONLY MODE 設定
appendonly no                                                                             #不使用AOF,AOF是另一種持久化方式,我沒有使用的原因是這種方式並不能在伺服器或磁碟損壞的情況下,保證資料可用性。
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
###SLOW LOG 設定
slowlog-log-slower-than 10000                                                      #如果操作時間大於0.001秒,記錄slow log,這個log是記錄在記憶體中的,可以用redis-cli slowlog get 命令查看
slowlog-max-len 1024                                                                   #slow log 的最大長度
###VIRTUAL MEMORY 設定
vm-enabled no                                                                            #不使用虛擬記憶體,在redis 2.4版本,作者已經非常不建議使用VM。
vm-swap-file /tmp/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
###ADVANCED CONFIG 設定,下面的設定主要是用來節省記憶體的,我沒有對它們做修改
hash-max-zipmap-entries 512
hash-max-zipmap-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
###INCLUDES 設定 ,使用下面的配置,可以配置一些個另其它的設定,如slave的配置
#include /path/to/local.conf
#include /path/to/other.conf
#include /opt/redis/etc/slave.conf

**如果記憶體情況比較緊張的話,需要設定核心參數:
echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf 

核心參數說明如下:
overcommit_memory檔案指定了核心針對記憶體配置的策略,其值可以是0、1、2。
0, 表示核心將檢查是否有足夠的可用記憶體供應用進程使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用進程。
1, 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
2, 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體

sysctl  -p

/usr/local/redis/bin/redis-server /etc/redis/redis.conf                                                #啟動redis服務
 
[[email protected] redis]# netstat -tanp | grep 6379
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      20862/redis-server   
tcp        0      0 10.0.2.209:6379             10.0.2.210:41097            ESTABLISHED 20862/redis-server

Slave配置:

wget http://redis.googlecode.com/files/redis-2.4.5.tar.gz
tar zxvf redis-2.4.5.tar.gz
cd redis-2.4.5
make
make PREFIX=/usr/local/redis install                                                    #設定redis服務類別目錄
mkdir /etc/redis                                                                                 #建立redis主設定檔目錄
mkdir -p /var/lib/redis
cp redis.conf  /etc/redis/
cd /etc/redis/
cp redis.conf redis.conf.bak
vim /etc/redis/redis.conf
###Slave config###
slaveof 10.0.2.209 6379                                                                     #如果這台機器是台redis slave,可以開啟這個設定。如果使用master-slave模式,我就會在master上把SNAPSHOTTING關了,這樣可以不用在master上做持久化,而是在slave上做,這樣可以大大提高master 記憶體使用量率和系統效能。
slave-serve-stale-data no                                                                    #如果slave 無法與master 同步,設定成slave不可讀,方便監控指令碼發現問題。
appendonly yes                                                                                 #在slave上使用了AOF,以保證資料可用性。
/usr/local/webserver/redis/bin/redis-server /etc/redis/redis.conf &         #後台啟動redis服務
[[email protected] redis]# netstat -tanp | grep redis
tcp        0      0 0.0.0.0:6379                0.0.0.0:*                   LISTEN      14098/redis-server  
tcp        0      0 127.0.0.1:6379              127.0.0.1:39689             ESTABLISHED 14098/redis-server    
tcp        0      0 10.0.2.210:41097            10.0.2.209:6379             ESTABLISHED 14098/redis-server

Master :

/usr/local/webserver/redis/bin/redis-cli
redis 127.0.0.1:6379> set hello redis
OK
redis 127.0.0.1:6379> get hello
"redis"
redis 127.0.0.1:6379> 

Slave :
/usr/local/webserver/redis/bin/redis-cli
redis 127.0.0.1:6379> get hello
"redis"
redis 127.0.0.1:6379> info
.  
.  
.
master_host:10.0.2.209
master_port:6379
master_link_status:up

關閉服務方法

$ redis-cli shutdown     

#關閉指定連接埠的redis-server  

$redis-cli -p 連接埠 shutdown

Redis 主從複製

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.