一,主从复制:
- Master可以拥有多个slave
- 多个slave除了可以连接到同一个master外,还可以连接到其他的slave,但不常用。
- 主从复制不会阻塞到master,再同步数据时,master可以继续处理client的请求。
- 主服务器负责写,从服务器负责读。
二,主从复制过程:
- slave与master建立连接,发送同步命令。
- master后台会创建一个后台进程将数据库快照保存到文件中(rdb方式),主进程开始继续收集写入命令并且写入缓存。
- 完成了后台的写入文件后,就将rdb文件和缓存发送给slave。
- slave拿到rdb文件后将文件保存至磁盘并执行收到的缓存里面的命令,就完成了主从复制。
三,配置主从复制:我这里以自己的机器为例
1. 首先需要三台服务器(装有redis的机器)
2. 我使用的机器,我使用centOs redis1 ip:192.168.159.137作为主服务器,其余两个作为从服务器。
centOs redis1 ip:192.168.159.137
centOs redis2 ip:192.168.159.138
centOs redis3 ip:192.168.159.139
3.配置从服务器这里以centOs redis2 ip:192.168.159.138为例
vim /usr/local/redis-4.0.0/redis.config
slaveof <masterip> <masterport> masterip:主服务器ip masterport:主服务器端口号
wq,保存。
4. 启动主服务器centOs redis1 ip:192.168.159.137,启动 centOs redis1 ip:192.168.159.138.
运行 从服务器redis-cli,输入info
发现 master_link_status:down ,主服务器是关闭的。但我的主服务器是开启的。经过搜索资料。主服务器也需要配置一下。
5.配置主服务器
vim /usr/local/redis-4.0.0/redis.config
(1)将 bind 127.0.0.1注释掉
(2)将protected-mode 改成no
保存,启动主服务器和主服务器,运行redis-cli。输入info命令。
主:
从:
测试:
主:
从:
可见已经成功。
此时我们测试使用从服务器set
发现报错:意思就是从服务器不能执行写操作,只能读。