1.主从复制,读写分离
1、Master可以拥有多个Slave;
2、多个salve可以连接同一个Master,还可以链接到其他的slave
3、主从复制不会阻塞Master,在同步数据时,master可以继续处理client请求
4、提供系统的伸缩性。
1.1主从复制过程:
1、slave与master简历连接,发送sync同步命令;
2、master会开启一个后台进程,将数据快照保存到文件中,同时master主进程会开始收集新的写命令并缓存;
3、后台完成保存后,就将文件发送给slave;
4、slave将此文件保存到硬盘上
1.2主从复制配置:
1.2.1 准备从服务器
方法一:
直接新装一台虚拟机并修改IP,重新安装部署或者redis或者从其他机器上copy。
方法二:
使用虚拟机软件自带的克隆功能,克隆一台服务器。移除网卡配置信息,重新配置ip(或者在图形用户界面中修改)。
[root@localhost ~]#rm -rf /etc/udev/rules.d/70-persistent-net.rules [root@localhost ~]#reboot ..... ... . //重启登录 [root@localhost ~] vim /etc/sysconf/network-scripts/ifcfg-eth0
内容修改为:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
[root@localhost ~] service network restart [root@localhost ~] ip add //观察被自动赋予的IP 型如:10.0.31.135 [root@localhost ~] vim /etc/sysconf/network-scripts/ifcfg-eth0
修改为:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.0.31.135
PREFIX=24
GATEWAY=10.0.31.1
DNS1=10.0.31.1
重启网卡并测试网络连接:
[root@localhost ~] service network restart [root@localhost ~] ping www.baidu.com //内网机器就ping一台内网ip
克隆过来的服务器,有redis,,如果新机没有redis,可以用scp命令将redis的源码和redis服务copy到新机器上。
1.2.2 修改从服务器配置文件
主服务器不需要任何变化,只需要修改从服务器的/usr/local/redis/conf/redis.conf
[root@localhost ~]# cd /usr/local/redis/ [root@localhost redis]# ls bin conf [root@localhost redis] vim /usr/local/redis/conf/redis.conf
# slaveof <masterip> <masterprot>
修改为:slaveof 10.0.31.144 6379
# masterauth <master-password> (如果主服务器没有密码,此步可以省略)
修改为: masterauth redis
1.2.3 依次启动主从节点
[root@localhost bin]# ./redis-server /usr/local/redis/conf/6379.conf
使用info查看role角色即可知道是主服务还是从服务。
1.2.4 验证主从复制
主节点继续写入数据,从节点观察数据;
从服务器写操作,不被允许: 127.0.0.1:6379> set a 1 (error) READONLY You can't write against a read only slave.
主节点模拟宕机,查看丛节点状态。
1.3存在问题
主节点宕机,无法继续写入数据。