主從複製
一、概述
-
數據存儲結構
主服務器:客戶端存取數據連接主機
從服務器:自動同步主服務器的數據 -
結構模式
一主一從
一主多從
主從從 -
主從複製工作原理
主從配置完成後,從服務器向主服務器發送同步數據的請求;
主服務器接收到請求後,會啓動後臺存盤進程,後臺會創建一個進程,單獨處理從服務器同步數據的請求,並且收集所有修改數據的命令到一個文件中。
主服務器完成後臺存盤後,傳送數據到從服務器。
從服務器接受數據文件,加載到內存中完成首次完全同步。
後續有新數據產生,,主服務器繼續收集數據修改命令,依次傳給從服務器,完成同步。 -
配置從服務器成功後,主服務器的數據會把從服務器數據覆蓋掉。
二、配置一主一從
2.1、一主一從實驗拓撲
2.2、配置
- 相關命令:
查看複製信息:info replication
命令行臨時配置:slaveof 主服務器Ip 主服務器端口
slaveof no one - 臨時配置從服務器
redis服務器默認爲主服務器。
[root@slave1 ~]# redis-cli -h 192.168.4.52 -p 6352
192.168.4.52:6352> SLAVEOF 192.168.4.51 6351 //臨時配置,重啓服務後失效
OK
192.168.4.52:6352> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:up
- 永久配置
[root@slave1 ~]# vim +282 /etc/redis/6379.conf
slaveof 192.168.4.51 6351
- 永久配置後,臨時取消從服務器狀態
[root@slave1 ~]# redis-cli -h 192.168.4.52 -p 6352
192.168.4.52:6352> SLAVEOF no one
OK
192.168.4.52:6352> INFO replication
# Replication
role:master
connected_slaves:0
重啓服務後生效
三、配置一主多從
3.1、一主多從實驗拓撲
3.2、配置
- 臨時
[root@slave2 ~]# redis-cli -h 192.168.4.53 -p 6353
192.168.4.53:6353> slaveof 192.168.4.51 6351
OK
192.168.4.53:6353> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:up
- 永久
[root@slave2 ~]# vim +282 /etc/redis/6379.conf
slaveof 192.168.4.51 6351
四、配置帶驗證的主從複製
4.1、主服務器設置連接密碼
- 直接修改配置文件501行,重啓服務
- 避免服務重啓,命令行修改密碼
[root@master ~]# redis-cli -h 192.168.4.51 -p 6351
192.168.4.51:6351> CONFIG SET requirepass 123456 //設置密碼
OK
192.168.4.51:6351> AUTH 123456 //輸入密碼才能使用查詢命令
OK
192.168.4.51:6351> CONFIG GET requirepass //查看密碼
1) "requirepass"
2) "123456"
192.168.4.51:6351> CONFIG REWRITE //將配置保存到配置文件中
OK
[root@master ~]# tail -1 /etc/redis/6379.conf
requirepass "123456"
4.2、從服務器指定主服務器的密碼
- 修改配置文件289行,masterauth 123456 重啓服務
- 避免服務重啓,命令行指定主服務器密碼
[root@slave1 ~]# redis-cli -h 192.168.4.52 -p 6352
192.168.4.52:6352> CONFIG SET masterauth 123456
OK
192.168.4.52:6352> CONFIG REWRITE
OK
192.168.4.52:6352> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:up //指定主服務器密碼後,連接狀態是up
[root@slave1 ~]# tail -1 /etc/redis/6379.conf
masterauth "123456"
- 未指定主服務器密碼
[root@slave2 ~]# redis-cli -h 192.168.4.53 -p 6353
192.168.4.53:6353> INFO replication
# Replication
role:slave
master_host:192.168.4.51
master_port:6351
master_link_status:down //連接狀態down
五、配置主從從
5.1、主從從實驗拓撲
5.2、配置
- 配置主從從結構
[root@redis5 ~]# redis-cli -h 192.168.4.55 -p 6355
192.168.4.55:6355> slaveof 192.168.4.54 6354
OK
[root@redis6 ~]# redis-cli -h 192.168.4.56 -p 6356
192.168.4.56:6356> SLAVEOF 192.168.4.55 6355
OK
- 查看
[root@redis4 ~]# redis-cli -h 192.168.4.54 -p 6354
192.168.4.54:6354> INFO replication
# Replication
role:master
connected_slaves:1
[root@redis5 ~]# redis-cli -h 192.168.4.55 -p 6355
192.168.4.55:6355> INFO replication
# Replication
role:slave
master_host:192.168.4.54
master_port:6354
master_link_status:up
[root@redis6 ~]# redis-cli -h 192.168.4.56 -p 6356
192.168.4.56:6356> INFO replication
# Replication
role:slave
master_host:192.168.4.55
master_port:6355
master_link_status:up
六、哨兵服務
6.1、哨兵服務介紹
- 監視master服務器
- 發現master宕機後,將從服務器升級爲主服務器
- 主配置文件 sentinel.conf
6.2、實驗拓撲
6.3、配置哨兵服務
- 基於主從從結構
- 安裝redis軟件
不存儲數據不做初始化
[root@sentinel ~]# yum -y install gcc
[root@sentinel ~]# tar -zxf redis-4.0.8.tar.gz
[root@sentinel ~]# ls
[root@sentinel ~]# cd redis-4.0.8/
[root@sentinel redis-4.0.8]# make && make install
[root@sentinel ~]# ls redis-4.0.8/sentinel.conf
redis-4.0.8/sentinel.conf //配置文件模板
- 創建主配置文件
[root@sentinel ~]# vim /etc/sentinel.conf
bind 192.168.4.57
sentinel monitor redis_server 192.168.4.54 6354 1
- 啓動哨兵服務
[root@sentinel ~]# redis-sentinel /etc/sentinel.conf //佔用一個終端
6.4、測試配置
[root@redis4 ~]# redis-cli -h 192.168.4.54 -p 6354
192.168.4.54:6354> SHUTDOWN
[root@redis5 ~]# redis-cli -h 192.168.4.55 -p 6355
192.168.4.55:6355> INFO replication
# Replication
role:master
connected_slaves:1
- 哨兵服務器狀態