环境搭建
三台服务器:
192.168.126.100(master)
192.168.126.110(slaver)
192.168.126.120(slaver)
拷贝192.168.126.100(主)服务器中的Redis到从机,保证Redis版本、环境一致:
scp -r redis-3.2.0/ root@192.168.126.110:/usr/local/ // 安装目录
scp -r redis/ root@192.168.126.110:/usr/local/ // 自定义配置、数据目录
scp -r redis-3.2.0/ root@192.168.126.120:/usr/local/
scp -r redis/ root@192.168.126.120:/usr/local/
主从复制 - 读写分离
Redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。
主从复制过程
过程:
1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
注意:redis2.8之前的版本:当主从数据库同步的时候从数据库因为网络原因断开重连后会重新执行上述操作,不支持断点续传。redis2.8之后支持断点续传。
配置
只需要修改两台从节点中redis的配置文件:
注意:如果主数据库设置了密码,需要在从数据的配置文件中通过masterauth参数设置主数据库的密码
效果
节点 | 效果 |
---|---|
192.168.126.100(master) | |
192.168.126.110(slaver) | |
192.168.126.120(slaver) |
常见问题
启动从节点的redis,可能出现以下错误: