資料庫系統中複制(replication)技術是非常重要的高可用設計,流行的MySQL、MongoDB資料庫都支援複制,Redis也實作了複制,而且感覺更靈活友善。類似于其他資料庫,實施Redis複制有以下好處。
- 資料安全。Redis支援快照(snapshotting)和隻追加檔案(append-only file, AOF)兩種方式将資料寫出到磁盤實作持久化和備份,類似于MySQL資料庫的dump和二進制日志。相比之下,複制是另一個實時工作的Redis執行個體。
- 讀寫分離。從庫可以作為讀庫分擔主庫的讀寫壓力。
Redis啟用複制後,主庫(master)會進行一次snapshotting,然後将資料快照傳送給從庫(slave),slave接收master的資料快照,master之後的寫操作都會發送到slave并執行。詳細步驟如下。
開啟複制工作非常簡單,master開放通路,slave通過host和port兩個參數接收master的更改,“ slaveof host port ”。以我本地為例,一台CentOS作為master,另一台Ubuntu作為slave。首先是開啟Redis端口(預設6379)的外網通路。具體啟動Redis複制有三種方式。
firewall-cmd --add-port=6379/tcp --permanent systemctl restart firewalld.service
①配置檔案法。
shell# echo -e "\n# set replication\nslaveof 192.168.112.128 6379" >> redis.conf
②指令行啟動選項法。
shell# ./src/redis-server redis.conf --slaveof 192.168.112.128 6379 &
③控制台指令法
redis> slaveof 192.168.112.128 6379
參考:
https://redis.io/topics/replication
《Redis in Action》( https://book.douban.com/subject/10597898/ )