1、准備工作
准備兩台以上已經安裝Redis的服務器,這里以兩台安裝了Redis5.0.9的Centos 7 為例子
Redis安裝:https://www.cnblogs.com/chenppp/p/13437212.html
主節點:192.168.199.50
從節點:192.168.199.51
Redis 提供了復制功能,將一個主數據庫的數據自動同步到從數據庫,防止數據丟失。
同時還可以配置一主多從來分擔主壓力,主只接受寫的操作,將讀的操作給從來實現;其中從庫也可以接受其它從庫的同步請求。
如果主、從因為網絡原因出現連接斷開,網絡正常后從可以自動連接主,連接成功后主會將完整的數據同步一次給從,保證數據一致性。
主從復制的原理過程:
1、從節點啟動后,會連接到主節點,從節點發送 Ping 信號,主節點返回 Pong,兩邊能互相通信,建立連接
2、建立連接后,從節點向主節點發送Psync信號,主節點接收信號后,全量同步數據給從節點
3、接下來,主節點就會持續的把寫命令發送給從節點,保證主從數據一致性。
2、配置主從
主節點配置:
bind 192.168.199.50 # 監聽地址 timeout 300 # 超時時間 daemonize yes # 作為守護進程運行 pidfile /usr/local/redis/logs/redis_6379.pid # 生成pid文件路徑,可使用默認路徑 logfile "/usr/local/redis/logs/redis.log" # 生成的日志文件路徑 requirepass password # Redis 認證密碼
repl-backlog-size 1mb # 設置backlog緩沖區大小,在slave端失連時存放要同步到slave的數據,因此當一個slave要重連時,經常是不需要完全同步的,執行局部同步就足夠了。backlog設置的越大,slave可以失連的時間就越長
repl-timeout 180 #快照同步的超時時間,同步時超過這個時間,會被認為同步失敗
client-output-buffer-limit slave 256mb 64mb 60 #如果增量同步的緩存大於256MB,或者超過60s大於64MB,則觸發快照同步
從節點配置
bind 192.168.199.50 # 監聽地址 timeout 300 # 超時時間 daemonize yes # 作為守護進程運行 pidfile /usr/local/redis/logs/redis_6379.pid # 生成pid文件路徑,可使用默認路徑 logfile "/usr/local/redis/logs/redis.log" # 生成的日志文件路徑
requirepass password # redis 認證 replicaof 92.168.199.50 6379 # 主節點ip和端口
masterauth password # 主節點密碼
replica-read-only yes # 從節點只讀
啟動主、從節點
主節點
從節點
登錄主節點redis,創建一個key
[root@swarm-node1 bin]# ./redis-cli -h 192.168.199.50 -p 6379 192.168.199.50:6379> AUTH password OK 192.168.199.50:6379> set id redis OK 192.168.199.50:6379> get id "redis" 192.168.199.50:6379>
登錄從節點,查看數據是否有同步過來
[root@swarm-node2 bin]# ./redis-cli -h 192.168.199.51 -p 6379 192.168.199.51:6379> AUTH password OK 192.168.199.51:6379> KEYS * 1) "id" 192.168.199.51:6379> GET id "redis" 192.168.199.51:6379> 192.168.199.51:6379>