简介
redis主从复制配置和使用都非常的简单。通过主从复制可以允许多个 slave 拥有和 master 相同的数据库副本。
redis主从复制的特点:
- master可以拥有多个slave
- 多个 slave 除了可以连接同一个master之外,还可以连接其他slave,当master宕机之后,可以用该slave再次充当master
- 主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
- redis的主从复制能够提高系统的伸缩性
下面是redis主从复制的一般架构设计:
主从复制的过程:
- slave 与 master 建立连接,发送sync同步命令
- master 会启动一个后台进程,将数据库快照保存到文件中,同时 master 主进程会开始收集新的写命令并缓存
- 后台完成保存后,将此文件发送给 slave
- slave 将此文件保存到硬盘上
主从复制的配置
master服务器的配置,需要指定哪些外部主机能够连接到master主服务器,修改master的配置文件:
bind 0.0.0.0 #允许所有外部主机访问
slave服务器的配置,只需在 slave 的配置文件中加入以下配置:
slaveof 192.168.1.1 6379 #指定要同步的master的主机和端口
masterauth xxxxxx #如果主机加了密码,则指定master服务主机的密码,注意由于redis服务器效率非常高,理论上1s之内能够尝试15万次的密码尝试,为了防止外部暴力破解,需要设置高强度的密码
验证是否设置成功
我们在主数据库上设置一对键值对:
redis 127.0.0.1:6379> set name zhangsan
OK
redis 127.0.0.1:6379>
在从服务器上获取这个键:
redis 127.0.0.1:6379> get name
"zhangsan"
redis 127.0.0.1:6379>
那么如果事先我们对redis主从集群的情况不甚了解,我们是如何区分哪个是主,哪个是从的呢?
别着急,我们只需要使用 info 命令就可以得到主从的信息,比如我们在从库上执行info: