1. 程式人生 > >Redis學習筆記(7)-redis一主多從搭建高可用環境之簡單版

Redis學習筆記(7)-redis一主多從搭建高可用環境之簡單版

在redis的主目錄下面建立三個資料夾

[[email protected] redis-4.0.11]# pwd
/root/redis/redis-4.0.11
[[email protected] redis-4.0.11]# mkdir 6379
[[email protected] redis-4.0.11]# mkdir 6380
[[email protected] redis-4.0.11]# mkdir 6381

拷貝redis.conf分別到這三個資料夾下面:

[[email protected] redis-4.0.11]# cp redis.conf 6379/redis_6379.conf
[
[email protected]
redis-4.0.11]# cp redis.conf 6379/redis_6380.conf [[email protected] redis-4.0.11]# cp redis.conf 6379/redis_6381.conf

分別修改三個配置檔案

bind  0.0.0.0              
Protected-mode no
port 6379          
daemonize yes 
logfile "6379.log"
pidfile "/var/run/redis_6379.pid" 
dbfilename dump_6379.rdb
slave-priority 100  

其中將6379作為主資料庫,6380和6381作為從資料庫需要多修改如下一處:

slaveof 127.0.0.1 6379

分別啟動三個資料庫

[[email protected] redis-4.0.11]# cd 6379
[[email protected] 6379]# redis-server redis_6379.conf
[[email protected] redis-4.0.11]# cd 6380
[[email protected] 6379]# redis-server redis_6380.conf
[[email protected]
redis-4.0.11]# cd 6381 [[email protected] 6379]# redis-server redis_6381.conf

測試資料庫

127.0.0.1:6379> set reptest hello
OK
127.0.0.1:6380> get reptest
"hello"

主從複製的原理

當一個從資料庫接到命令後,會向主資料庫發起sync命令。此時,主資料庫會在後臺進行快照儲存,同時將進行快照的這段時間內收到的命令快取起來,等快照結束後一併傳輸給從資料庫。從資料庫接到主資料庫的資料後,首先會將主資料庫的快照檔案載入,隨後將快取的命令逐個執行。以上過程稱為複製初始化。

複製初始化結束後,主資料庫一旦接受到新的命令,會給從資料庫傳送,從而保證主從一致性。

從資料庫在同步的過程中不會阻塞,可以繼續響應客戶端命令。可以配置一個引數slave-serve-stable-data no 使得從資料庫在未完成同步的時候反饋錯誤資訊給呼叫的客戶端。

redis支援增量複製和無硬碟複製。

通過主從資料庫的配置,可以實現資料庫的讀寫分離。

當主資料庫宕機後,可以設定其中一個從資料庫,使其升級為主資料庫:

slaveof no one

其從從資料庫改變主資料庫資訊:

slaveof 127.0.0.1 8379

比較麻煩,哨兵可以解決這個問題,下一節,介紹哨兵。