Redis 主從同步配置

來源:互聯網
上載者:User

標籤:

主從功能:

為了防止 Redis 磁碟損壞,導致資料丟失,Redis 提供了複製功能,將一個主要資料庫的資料自動同步到從資料庫,防止資料丟失。
同時還可以配置一主多從來分擔主壓力,主只接受寫的操作,將讀的操作給從來實現;其中從庫也可以接受其它從庫的同步請求。
如果主、從因為網路原因出現串連斷開,網路正常後從可以自動連接主,串連成功後主會將完整的資料同步一次給從,保證資料一致性。

主從原理:

1、從資料庫啟動後,向主要資料庫發送 SYNC 命令
2、主要資料庫收到 SYNC 命令後開始儲存快照,在此期間所有發給主要資料庫的命令都被緩衝起來
3、快照儲存完後,主要資料庫把快照和緩衝的命令一起發給從資料庫
4、從資料庫儲存主要資料發來的快照檔案,並依次執行主要資料庫發來的緩衝命令

在同步過程中,主、從資料庫都不會阻塞:

-----> 主庫可以繼續接受用戶端提交的查詢或修改請求;
-----> 從庫預設使用同步之前的資料繼續響應用戶端發來的命令

一、配置 Redis 主從

## 這裡可以使用一台伺服器啟動兩個 Redis 服務,只需指定不同的設定檔,不同的連接埠即可
## 為了加入防火牆規則,我使用兩台伺服器來完成

Redis Master :192.168.1.88
Redis Slave :192.168.1.80

1、Redis Master ( 這裡不寫安裝過程了,寫到 Slave 位置 )

[[email protected] ~]# vim /usr/local/redis/redis.confdaemonize yesport 6379timeout 300loglevel verbosepidfile /usr/local/redis/logs/redis.pidlogfile /usr/local/redis/logs/redis.logrequirepass redispassworddatabases 16save 900 1save 300 10save 60 10000rdbcompression yesdbfilename dump.rdbdir /usr/local/redis/data/appendonly noappendfilename appendonly.aofappendfsync everysecno-appendfsync-on-rewrite yesauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb[[email protected] ~]# redis-server /usr/local/redis/redis.conf[[email protected] ~]# netstat -anpt | grep redistcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1154/redis-server[[email protected] ~]# iptables -I INPUT 4 -s 192.168.1.80 -p tcp --dport 6379 -j ACCEPT

2、Redis Slave

:https://code.google.com/p/redis/downloads/list

[[email protected] ~]# cd /usr/local/src/[[email protected] src]# tar zxf redis-2.6.10.tar.gz[[email protected] src]# cd redis-2.6.10[[email protected] redis-2.6.10]# make ; make install[[email protected] ~]# mkdir /usr/local/redis[[email protected] ~]# cd !$cd /usr/local/redis[[email protected] redis]# cp ../src/redis-2.6.10/redis.conf .[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-cli .[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-server .[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-sentinel .[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-benchmark .[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-check-aof .[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-check-dump .[[email protected] redis]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf[[email protected] redis]# sysctl vm.overcommit_memory=1[[email protected] redis]# mkdir data logs[[email protected] redis]# vim redis.confdaemonize yesport 6379timeout 300loglevel verbosepidfile /usr/local/redis/logs/redis.pidlogfile /usr/local/redis/logs/redis.log#requirepass redispassworddatabases 16save 900 1save 300 10save 60 10000rdbcompression yesdbfilename dump.rdbdir /usr/local/redis/data/appendonly noappendfilename appendonly.aofappendfsync everysecno-appendfsync-on-rewrite yesauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbmasterauth redispasswordslaveof 192.168.1.88 6379

## 直接複製 Master 的設定檔,添加最後兩行即可

[[email protected] ~]# redis-server /usr/local/redis/redis.conf[[email protected] ~]# netstat -anpt | grep redistcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 3442/redis-servertcp 0 0 192.168.1.80:50799 192.168.1.88:6379 ESTABLISHED 3442/redis-server

## 可以看到啟動成功,並且建立了一條到 Master 的串連

[[email protected] ~]# ls /usr/local/redis/data/dump.rdb

## data 目錄下也有了 master 同步過來的資料( 雖然主庫並沒有寫入資料 )

二、測試 Redis 主從

[[email protected] ~]# redis-cli -a redispasswordredis 127.0.0.1:6379> keys *(empty list or set)redis 127.0.0.1:6379> set name wangOKredis 127.0.0.1:6379> set id 8OKredis 127.0.0.1:6379> keys *1) "id"2) "name"redis 127.0.0.1:6379> quit

## 這是在 master 上的操作,-a 指定認證密碼

[[email protected] ~]# redis-cliredis 127.0.0.1:6379> keys *1) "id"2) "name"redis 127.0.0.1:6379> get name"wang"redis 127.0.0.1:6379> get id"8"redis 127.0.0.1:6379> set cc 123(error) READONLY You can‘t write against a read only slave.redis 127.0.0.1:6379> quit

## 這是在從上的操作,其中 slave 沒有設密碼所以不用 -a 指定,可以查到同步過來的 keys ,因為要保持資料一致性,所以不能寫入。
## 如果在主執行 del name 那麼從上的 name 也被刪除。
## 主從同步完成 !

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.