在前面的一篇文章中,我们已经介绍了redis的持久化机制,但是常言说 “不要把鸡蛋放到一个篮子里”。随着系统数据量的增长,数据完整性变得越来越重要,这时候就需要复制特性来保证。提到复制就不得不提到主从,一般来说,复制都是基于主从的。redis 也使用了同样的方法来实现自己的复制特性。
设置从服务器来保存数据集的副本
从服务器在接收到主服务器的初始副本之后,客户端每次向主服务器写入,从服务器都会实时得到更新。客户端也会在主从服务器上读取对应的数据.部署完主从服务器,客户端就可以向任意一个从服务器发送读请求,而不必再向之前一样,总是把每个读请求都发送给主服务器(客户端通常会随机选择使用哪个从服务器)
配置复制选项
当从服务器连接主服务器时,主服务器会执行BGSAVE操作。开启从服务器所必须的选项只有slaveof 一个。如果用户在启动Redis服务器的时候,指定了一个包含slaveof host port 选项的配置文件,那么Redis服务器将根据选项给定的IP地址和端口号来连接主服务器。对于一个正在运行的Redis 服务器,用户可以发送 SLAVEOF no one 命令来让服务器终止复制操作,不再接受主服务器的数据更新;也可以通过发送 SLAVEOF host port 命令来让服务器开始复制一个新的主服务器。
redis 复制启动的过程
注意:从服务器在进行同步时,会清空自己的所有数据:从服务器在与主服务器进行初始连接时,数据库中原有的数据都将丢失,并被替换成主服务器发来的数据。Redis 也不支持主主复制。
主从链
从服务器也可以拥有自己的从服务器,由此形成主从链。