天天看點

Redis主從複制,主從複制安全性考量

一、概述

Redis主從同步結構與Mysql類似[Mysql主從同步]https://blog.csdn.net/ck784101777/article/details/100898344

但是Redis并不需要binlog日志,也不需要進行多少配置,隻需要指定目前主機是哪台主機的從伺服器即可

主從複制工作原理:

1)slave向master發送sync指令

2)master啟動背景存盤程序,并速記所有修改資料的指令

3)master完成背景存盤後,傳輸整個資料檔案到slave

4)slave接受資料檔案,加載到記憶體中完成首次完全同步

5)後續有新資料産生時,master繼續收集資料修改指令一次傳給slave,完成同步

對比Mysql主從複制的流程

1)主伺服器執行完全備份

2)将完全備份資料導入從伺服器,從伺服器執行完全備份檔案,完成第一次資料同步

3)主伺服器上開啟binlog日志,指定唯一id号,确定偏移量

4)從伺服器确定唯一id好,通過指令指定主伺服器資訊

我們可以看到相似性,即都完成了一次完全同步,在這個基礎上從伺服器繼續收集主伺服器資料

二、配置Redis主從複制

[安裝Redis伺服器教程]https://blog.csdn.net/ck784101777/article/details/101294306

1.拓撲圖

Redis主從複制,主從複制安全性考量

2.将主機192.168.4.51配置為主伺服器

 每台redis伺服器,預設都是主伺服器;是以主伺服器不需要配置。

  1. [[email protected] ~]# redis-cli -h 192.168.4.51 –p 6351
  2. 192.168.4.51:6351> info replication              //檢視複制資訊
  3. # Replication
  4. role:master                           //是master 伺服器
  5. connected_slaves:0              //從伺服器個數零台
  6. master_replid:eaa14478158a71c41f947eaea036658c2087e8f2
  7. master_replid2:0000000000000000000000000000000000000000
  8. master_repl_offset:0
  9. second_repl_offset:-1
  10. repl_backlog_active:0
  11. repl_backlog_size:1048576
  12. repl_backlog_first_byte_offset:0
  13. repl_backlog_histlen:0
  14. 192.168.4.51:6351>

3.将主機192.168.4.52配置為192.168.4.51的從伺服器

1)指令行配置(馬上生效)

指令行配置非常簡單,一條指令即可:slaveof 主伺服器ip 端口

  1. [[email protected] ~]# redis-cli -h 192.168.4.52 –p 6352    
  2. 192.168.4.52:6352> slaveof 192.168.4.51 6351              //指定主伺服器ip位址與端口
  3. OK
  4. 192.168.4.52:6352> info replication                                //檢視複制資訊
  5. # Replication
  6. role:slave                                                                        //從伺服器
  7. master_host:192.168.4.51                                              //主伺服器ip位址
  8. master_port:6351                                                          //主伺服器端口
  9. master_link_status:up                                                 //連接配接狀态開啟
  10. master_last_io_seconds_ago:3
  11. master_sync_in_progress:0

2)永久配置(重新redis服務後,依然有效)

  1. [[email protected] ~]# vim /etc/redis/6379.conf    
  2. slaveof 192.168.4.51 6351 //在檔案末尾添加或在原有配置項上修改都可以
  3. :wq

3)在主伺服器确認複制資訊

  1. [[email protected] ~]# redis-cli -h 192.168.4.51 –p 6351
  2. 192.168.4.51:6351> info replication             //檢視複制資訊
  3. # Replication
  4. role:master
  5. connected_slaves:1                    //從伺服器個數 1台
  6. slave0:ip=192.168.4.52,port=6352,state=online,offset=14,lag=1    //從伺服器資訊
  7. master_replid:db7932eb0ea4302bddbebd395efa174fb079319f
  8. master_replid2:0000000000000000000000000000000000000000
  9. master_repl_offset:14
  10. second_repl_offset:-1
  11. repl_backlog_active:1
  12. repl_backlog_size:1048576
  13. repl_backlog_first_byte_offset:1
  14. repl_backlog_histlen:14
  15. 192.168.4.51:6351>

4.測試

1)用戶端連接配接主伺服器存儲資料

  1. [[email protected] ~]# redis-cli -h 192.168.4.51 –p 6351    
  2. 192.168.4.51:6351> set x 9
  3. OK
  4. 192.168.4.51:6351> set y 8
  5. OK
  6. 192.168.4.51:6351> set z 7
  7. OK
  8. 192.168.4.51:6351>

2)在從伺服器本機登入,檢視資料(與主伺服器資料一緻)

  1. [[email protected] ~]#     redis-cli -h 192.168.4.52 –p 6352
  2. 192.168.4.52:6352> keys *
  3. 1)“x”
  4. 2)“y”
  5. 3)“z”
  6. 192.168.4.52:6352>

三、帶驗證的主從複制

通過以上案例我們知道主從複制非常簡單,隻需要一台裝有Redis的伺服器,通過一條指令即可實作,但是這樣非常的危險,因為任何一個知道主伺服器ip和端口的操作員都可以通過配置主從複制來盜取主伺服器上的資料,是以我們需要帶驗證的主從複制,即在進行主從配置的時候加入驗證資訊(輸入驗證密碼)來確定安全性

1.設定主伺服器192.168.4.51 設定連接配接密碼123456

 修改主伺服器的配置檔案,設定密碼。

  1. [[email protected] ~]# vim +501 /etc/redis/6379.conf
  2. requirepass 123456 //設定密碼
  3. :wq
  4. [[email protected] ~]# vim +43 /etc/init.d/redis_6379                         //修改腳本
  5. $CLIEXEC -h 192.168.4.51 -p 6351 -a 123456 shutdown          //添加密碼
  6. :wq
  7. [[email protected] ~]# /etc/init.d/redis_6379 stop                               //停止服務
  8. [[email protected] ~]# /etc/init.d/redis_6379 start                             //啟動服務
  9. Starting Redis server...
  10. [[email protected] ~]#
  11. [[email protected] ~]# netstat -utnlp | grep :6351                                //檢視端口
  12. tcp 0 0 192.168.4.51:6351 0.0.0.0:* LISTEN 11523/redis-server

2.配置從伺服器192.168.4.52

1) 修改配置檔案,設定從伺服器連接配接密碼。

  1. [[email protected] ~]# /etc/init.d/redis_6379 stop //停止服務
  2. [[email protected] ~]# vim +289 /etc/redis/6379.conf
  3. masterauth 123456 //設定密碼
  4. :wq
  5. [[email protected] ~]# /etc/init.d/redis_6379 start //啟動服務
  6. Starting Redis server...
  7. [[email protected] ~]#
  8. [[email protected] ~]# netstat -utnlp | grep :6351 //檢視端口
  9. tcp 0 0 192.168.4.51:6351 0.0.0.0:* LISTEN 11523/redis-server

2) 在從伺服器本機連接配接服務,檢視複制資訊

  1. [[email protected] ~]# redis-cli -h 192.168.4.52 –p 6352    
  2. 192.168.4.52:6352> info replication //檢視複制資訊
  3. # Replication
  4. role:slave //從伺服器
  5. master_host:192.168.4.51        //主伺服器ip位址
  6. master_port:6351 //主伺服器端口
  7. master_link_status:up //連接配接狀态開啟
  8. master_last_io_seconds_ago:3
  9. master_sync_in_progress:0
  10. ……
  11. ……
  12. 192.168.4.52:6352>

繼續閱讀