环境说明
按照之前的步骤安装2台服务器:Redis01172.16.100.10
Redis02172.16.100.20
开启防火墙端口和关闭seLinux
打开6379端口
关闭selinux
然后重启iptables服务。
修改配置文件
修改主服务器配置文件,如果不需要密码验证则无需修改此文件,修改后请重新启动Redis服务
修改从服务器配置文件,
找到slaveof字段,如果主服务器有密码验证,则要配置相同的密码,如下如:
验证主从复制
在主上设置一个键值数据
在从上获取一个键值数据
通过info查看连接信息,在主上执行下面的命令:
不停机切换
Redis的主从模式中的主与从没有什么区别,唯一的区别就是在这个模式下从服务器是不允许被写入数据的,看下图:
我在从服务器上做一个SET操作,提示如下
其实主从切换就是把从变成主,主变成从。基本步骤如下:
设置从服务器可写:
修改配置文件,如下图:
修改完成后,重启从服务器。
修改和重启从服务器后,从服务器依然可以从主服务器去同步数据,这一点不用担心。
把应用访问的IP更换成从服务器的IP:
这一步忽略,实际上就是业务对数据库访问IP的变更。
把从服务器设置为主服务器:
在从上执行这个命令
上面这个命令是将从服务器关闭复制功能,将从服务器作为独立的主服务器运行。这个很好理解,就是它不去同步其他的数据库服务器了,自己单独运行,那么自然就是主服务器。
上面的命令还有其他用法就是动态切换主服务器,比如如果我们要临时让从服务器去其他主服务器去同步数据,可以这样运行,如下图:slaveof MasterIP MasterPort
注意:假如当前服务器已经是A服务器的从服务器,而你又使用该命令让当前服务器成为B服务器的从服务器,也就是从B同步数据,那么当前服务器将丢弃之前同步的就数据,开始对新的主服务器进行同步。这个命令只是临时生效,临时覆盖配置文件中的slaveof设置,重启后恢复。
验证一下复制是否停止:
在原来的主服务器上运行info命令,如下显示:
虽然角色是主,但是SLAVE的连接已经没有了
我们做一个SET操作,然后在原来的从服务器(Redis02)上执行一下GET操作,看看是否还可以获取数值:
可以看到无法获取。
在Redis02上执行info命令看看结果:
显示它自己已经变成主了。
通过上述的操作我们就可以替换原来的主服务器或者在主服务器失败的时候可以手动切换