Redis學習筆記(7)-redis一主多從搭建高可用環境之簡單版
阿新 • • 發佈:2018-12-17
在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
比較麻煩,哨兵可以解決這個問題,下一節,介紹哨兵。