1.什么是主从复制?
主机数据更新后根据配置和策略, 自动同步到备机的 master/slaver 机制,Master 以写为主,Slave 以读为主,主从复制节点间数据是全量的。
具有读写分离,性能扩展、降低服务器压力,并且当从服务器出现问题,有容灾快速恢复的能力。
为了解决主服务器玩一次出现问题,可以利用集群来解决,一个集群就是一主多从的服务器。
* 当从服务器挂掉重新启动后,就会变成主服务器,需要重新通过命令变成从服务器,并且获取到主服务器中的全部数据。
* 如果是主服务器挂掉了,它的从服务依旧是该主服务器的小弟,不会改变,当主服务器重新启动后,依旧是主服务器。
2.主从复制原理是什么?
1. 当从服务器连接上主服务器时,从服务器会主动向主服务器发送数据同步的消息。
(Slave 启动成功连接到 master 后会发送一个 sync 命令;)
2. 主服务器送到从服务器发来的同步消息,就会把主服务器的数据进行持久化,生成rdb文件,将rdb文件发送给从服务器,从服务器收到后进行读取。
(Master 接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master 将传送整个数据文件到 slave,以完成一次完全同步。)
3. 当主服务器中有写操作后,主服务器会主动的向从服务器完成数据同步。
全量复制:slave 服务器在接收到数据库文件数据后,将其存盘并加载到内存中。
增量复制:Master 继续将新的所有收集到的修改命令依次传给 slave,完成同步。
但是只要是重新连接 master,一次完全同步(全量复制) 将被自动执行。
3.什么是薪火相传?
薪火相传指上一个slave可以是下一个slave的Master,slave同样也可以接受其他slave的连接和同步请求,那么该slave作为了链条中下一个Master,可以有效减轻Master的写压力,去中心化。
用slaveof
中途变更转向:会清除之前的数据,重新建立拷贝最新的,风险是—旦某个slave宕机,后面的slave都没法备份,主机挂了,从机还是从机,无法写数据了。
4.什么是反客为主?
当主服务器挂掉后,从服务器可以通过手敲命令 slaveof no one 晋升成主服务器
5.什么是哨兵模式?
哨兵模式是反客为主的自动版本,能够后台监控主机是否发生故障,如果发生故障会根据投票数来选择将某个从服务晋升成主服务器。
复制延时
由于所有的写操作都是先在 Master 上操作,然后同步更新到 Slave 上,所以从 Master 同步到 Slave 机器有一定的延迟,当系统很繁忙的时
候,延迟问题会更加严重,Slave 机器数量的增加也会使这个问题更加严重。
故障恢复
优先级在redis-config中设置(不同版本的属性名可能会有一些区别)
-
优先级:在 redis.conf 中默认 slave-priority 100,值越小优先级越高。
-
偏移量:指获得原主机数据的同步值,谁获得原数据量越多就优先选谁。
-
runid:每个 redis 实例启动后都会随机生成一个 40 位的 runid。
优先级:在 redis.conf 中默认 slave-priority 100,值越小优先级越高。
偏移量:指获得原主机数据的同步值,谁获得原数据量越多就优先选谁。
runid:每个 redis 实例启动后都会随机生成一个 40 位的 runid。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/280359.html