【Redis学习总结】6. Redis的复制(Master/Slave)

1.定义

主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

2. 测试

实验环境:一个虚拟机 CentOS 

1. 在/myredis/目录下拷贝3个redis.conf文件

2. 开启daemonize yes

3.指定pid文件名字

其余2台服务器的pid名字分别是redis6380.pid  redis6381.pid 

4.指定端口

其余2台服务器的端口分别是6380 6381

5.log文件名字

其余2台服务器的log文件名字分别是6380.log 6381.log

6. 指定dump.rdb名字

其余2台服务器的dump.rdb名字分别是dump6380.rdb dump6381.rdb

7.启动三台服务器

查看redis服务器的启动情况

8. 我们使用 info relication 命令可以看到服务器的信息

9. 6379作为Master,6380 6381作为slave(主机不需要变动,从机需要变动)

主机插入数据(观察是否可以实现从机的自动备份)

我们可以看到从机做了自动备份,而且首次是全量备份!

我们使用info replication观察服务器信息

6379主机:

6380 6381 从机:

3. 主从复制的相关问题

(1)从机是否可以写

主机:

从机

(2)主机shutdown后,从机会原地待命(当然可以配置不原地待命)

当主机从新启动之后,从机会自动与主机实现主仆关系,也就是说自动成为主机的奴隶,自动备份主机信息。

(3)从机挂掉后,再次启动时身份是master,若是想要备份原主机的信息需要再次执行slaveof命令

4. 薪火相传

上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力

5.反客为主

主机shutdown之后,手动配置从机中的一员成为新的主机,手动配置其余的从机跟随新主机

手动配置从机中的一员成为新的主机

手动配置其余的从机跟随新主机

测试主从

6.哨兵模式

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

(1)重新配置主从,6376作为Master,6380 6381 作为Slave

(2)自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错

(3)配置哨兵,填写内容 vim sentinel.conf

             sentinel monitor 被监控数据库名字(自定义) 127.0.0.1 6379 1

上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机

(4)启动哨兵

查看日志信息:

可以看出哨兵启动了。监视6379主机,巡逻6380 6381从机!

测试:

主机shutdwn了,哨兵监控到6379挂掉,开始组织投票选新主机

可以看出哨兵选取的新主机是6380

而其余的从机会跟随新主机

所以把哨兵视为自动的反客为主!

如果之前的挂掉的主机又好用了,原主机被哨兵安排成为新主机的奴隶

7.复制原理

slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。

全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步

但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

猜你喜欢

转载自blog.csdn.net/FullStackDeveloper0/article/details/88417628