虽然Redis可以实现单机的数据持久化,都解决不了单点宕机问题,即一旦单台redis服务器本身出现系统故障、硬件故障等问题后,就会直接造成数据的丢失,需要使用另外的技术来解决单点问题。
主备模式(master/slave),可以实现Redis数据的跨主机备份。
redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
过程:
1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
Redis主从结构支持一主多从
主节点master:10.0.0.160
从节点slave: 10.0.0.161
版本号 :redis_version:5.0.3
方式1:命令行设置
Slave主要配置:Redis Slave 也要开启持久化并设置和master同样的连接密码,因为后期slave会有提升为master的可能,Slave端切换master同步后会丢失之前的所有数据。一旦某个Slave成为一个master的slave,Redis Slave服务会清空当前redis服务器上的所有数据并将master的数据导入到自己的内存,但是断开同步关系后不会删除当前已经同步过的数据。
先在mater上设置key1,主机10.0.0.160,设为v1-master
然后在slave上执行命令,10.0.0.161,设置key,值设为v1-slave
在slave上设置master的IP和端口,4.0版之前的指令为slaveof,5.0.3仍可使用SLAVEOF MasterIP Port
发现发现master_link_status:一直都是down状态,应该是up才可以成功
解决办法,在redis的配置文件redis.conf中的bind 127.0.0.1,把这个主服务器的这个注释掉就可以
原文:https://www.cnblogs.com/liuyakai/p/14754509.html