天天看点

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>

继续阅读