1. 什么是主从复制?
主机数据更新后,根据配置和策略,自动同步到备机的 master/slave 机制,master以写为主,slave以读为主
2. 主从复制特点
(1)读写分离
(2)容灾快速恢复
3. 主从复制【一主多从】,只能有一台主服务器,从服务器一般是多台,但主服务器只能有一台
因为,如果有多个主服务器,从服务器不知道从哪个主服务器同步数据,因为不同的主服务器可能数据不同
4. 如何实现一主两从(配置)
(1)首先,复制一个 redis.conf 文件
(2)配置一主两从:需要创建三个配置文件:
redis6379.conf
redis6380.conf
redis6381.conf
(3)在三个配置文件中写入内容:
~引入原 redis.conf 内容,使用 include: include/redis.conf
~pid参数配置:pidfile /var/run/redis_6379.pid
~port 6379
~dbfilename 设置:dbfilename dump6379.rdb
~关闭原redis.conf 的 AOF:appendonly 改为 no
======================================
redis6380.conf 以及 redis6381.conf 相同配置
(4)启动三台服务器
redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf
(5)info replication 打印主从复制的相关信息
(6)配从不配主,在从服务器上分别执行 slaveof + 主机 ip + 主机 port
举例:将6379作为主机,6380和6381作为从机
在 6380 和 6381 上分别执行: slaveof 127.0.0.1 6379,即可实现主从效果
5. 当一个从服务器挂掉,再重新起来,他便不再是从服务器,是个独立的主服务器
但是当该从服务器重新设置为原主服务器的slave时,会一次性同步主机上的所有数据,即,在从服务器挂掉期间,主服务器新增的数据,在从服务器起来后,也会一并同步给从服务器
当主服务器挂掉,从服务器对主服务器依然有从属关系,不会解关联,等主服务器恢复后,依然是原来的主从关系
6. 主从复制原理小结:
(1)当从服务器连接上主服务器后,会向主服务器发送数据同步的请求
(2)主服务器接收到从服务器的请求后,首先会把主服务器的数据进行持久化操作,写入 rdb 文件,然后再把最新的 rdb 文件发送给从服务器,从服务器拿到文件后做数据读取
(3)每次主服务器进行写操作之后,都会主动和从服务器进行数据同步
7. 薪火相传
主服务器一次可能无法同步所有的从服务器,那就会先同步至一台从服务器,然后再由这个从服务器再去同步至其他的从服务器,其他的从服务器不直接和主机交互
缺点:很明显,主机同步的从机若挂了,后面的同步都歇菜
8. 反客为主
slaveof no one:当主机挂掉,在从机上执行该语句,会使从机变主机
缺点:手动版,不能自动切换成主机
那如何自动切换成主机呢?
哨兵模式,反客为主的自动版