七、redis主從複製
主從複製工作原理
1.主從複製概述
1.1 結構模式:一主一從、一主多從、主從從
1.2工作原理
– Slave向maste傳送sync命令
– Master啟動後臺存檔程序,同時收集所有修改資料命
令
– Master執行完後臺存檔程序後,傳送整個資料檔案到
slave。
– Slave接收資料檔案後,將其存檔並載入到記憶體中完成
首次完全同步
– 後續有新資料產生時,master繼續將新的所以收集到
的修改命令依次傳給slave,完成同步。
主從複製缺點
• 缺點
– 網路繁忙,會產生資料同步延時問題
– 系統繁忙,會產生資料同步延時問題
2 配置步驟
2.1 拓撲結構
master(192.168.4.11/24)-----------複製/同步----------->slave(192.168.4.12/24)
2.2 master伺服器的配置
*配置之前建議關閉redis服務
[root@db1 ~]# /etc/init.d/redis_6379 stop
[root@db1 redis]# vim /etc/redis/6379.conf
70 bind 192.168.4.11
配置完成後啟動:
配置從庫:(一主多從,主從從配置方法類似)
修改服務使用的ip地址(在配置檔案中修改)
[root@db2 redis]# vim /etc/redis/6379.conf
70 bind 192.168.4.12
[root@db2 redis]# redis_6379 start
[root@db2 redis]# ss -antulp | grep :6379
tcp LISTEN 0 128 192.168.4.12:6379 *:* users:(("redis-server",pid=2997,fd=6))
-------------------------------------------------------------------------------------------
[root@db2 redis]# redis-cli -h 192.168.4.12
192.168.4.12:6379> info replication #檢視主機配置
# Replication
role:master
connected_slaves:0
master_replid:046c4ff3f197a94202dee5e45943db84ab18c697
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.4.12:6379> slaveof 192.168.4.11 6379 #命令列指定主庫 格式 :slaveof 主庫ip地址 埠號
OK
192.168.4.12:6379> info replication #檢視主機配置資訊
# Replication
role:slave
master_host:192.168.4.11
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:168
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:6276c57fb00eae44ffccc5b607b51f983024b899
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:168
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:168
————————————————————————————————————————————————
2.3 反客為主
主機宕機後,手動將從庫設定為主庫
[root@db2 redis]# redis-cli -h 192.168.4.12
192.168.4.12:6379> slaveof no one
OK
192.168.4.12:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:25040f634eddf3df52eb6f4fde979e1b25cd4b49
master_replid2:6276c57fb00eae44ffccc5b607b51f983024b899
master_repl_offset:574
second_repl_offset:575
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:574