一、Redis 主从复制原理解析
主从模式
1.
2.一主二从最常见
3.
二、多虚拟机克隆方案
1.在虚拟机关机的情况下,右键,管理->克隆
2.点击下一步,选择创建完整克隆
3. 克隆完成后,进入克隆的虚拟机,用户名和密码和被克隆的虚拟机一样。
4.ip addr查看ip地址,找到link/ether后面的mac地址,将它先拷贝到文档里。
5.vi /etc/udev/rules.d/70-persistent-ipoib.rules
加上下面这一句,如果没有70-persistent-ipoib.rules文件,可自行创建,注意要修改的地方是mac地址,即第4步中拷贝出来的地址;name是网卡名称。
ACTION=="add",SUBSYSTEM=="net",DRIVERS=="?*",ATTR{type}=="32",ATTR{address}=="00:0c:29:a9:49:0b",NAME="ens33"
6.vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改的内容如下:
IPADDR=192.168.1.40
HWADDR="00:0c:29:a9:49:0b"
7.重启网络服务
systemctl restart network.service
8.在实际操作中,我没有做第4、第5步,只是修改了/etc/sysconfig/network-scripts/ifcfg-ens33 里的IPADDR,然后重启网络服务,就可以了。(我的虚拟机里没有/etc/udev/rules.d/70-persistent-ipoib.rules文件,ifcfg-ens33文件里也没有配置HWADDR)
三、搭建Redis主从复制(读写分离)
克隆完虚拟机后,我将192.168.1.33这台虚拟机作为redis-master,192.168.1.40和192.168.1.50作为redis-slave
1.查看主从信息 info replication
2.配置redis-slave ,配置192.168.1.40
打开 redis.conf
(1)配置master的ip、port
(2)配置master的密码
(3)只读配置,默认是yes,这个配置也就能说明在master上进行写操作,在slave上进行读操作
3.测试(一主一从模式)
(1)在192.168.1.33,info replication,可以看到主从信息,33是master,ip是192.168.1.40,端口是6379,状态是online
(2)在192.168.1.40,info replication,可以看到主从信息,40是slave,master连的是33,所连接的master端口是6379,master状态是up
(3)在33上
(4)在40上,可以看到同步过来的数据,同时在40上设置值,是写不进去的
4.配置另一台slave,也就是配置一主二从模式
配置192.168.1.50,配置方法和192.168.1.40一样。配置好之后,在192.168.1.33上查看,发现此时有两台slave都连着master
5.测试一主二从模式
(1)停掉192.168.1.40,发现此时192.168.1.33上只有一台slave了,是192.168.1.50
(2)此时,在192.168.1.33上设置k1、k2、k3的值,在192.168.1.50上k1、k2、k3同步过来了,此时,重启192.168.1.40的redis,查看数据,k1、k2、k3也同步过来了
(3)停掉master(192.168.1.33)的redis
当停掉master的redis后,192.168.1.40和192.168.1.50的角色还是slave(这说明是水平同步数据),并且master的状态是down