一. 一主机两从机

1.首先创建Redis容器:

2.配置两个从机的配置文件redis.conf:

replicaof ip地址 端口号
masterauth 主机密码

3.测试查看

info replication

主机输入后显示:

从机输入后显示:

在主机输入数据:

在从机查看数据:

二.薪火相传式连接

1.命令连接

在第一个从机输入:

slaveof 182.92.0.84 6382

在第二个从机输入:

slaveof 182.92.0.84 6383

完成链接!

2.测试查看

info replication

在主机输入显示:

在第一个从机输入显示:

在第二个从机输入显示:

连接成功!

三.反客为主:

在主机挂掉之后,选择一个从机输入:

slaveof no one

四.复制原理

Slave启动成功连接到master后会发送一个sync命令;

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

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

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

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

五.哨兵模式

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

1.配置sentinel.conf文件

sentinel monitor host 182.92.0.84 6382 1
sentinel auth-pass host qiusuo521.
sentinel down-after-milliseconds host 3000  //检测到主机挂掉后,多久选取一台从机作为主机,默认值是30s,这里调成3s

2、启动哨兵

$ docker run -it --name sentinel -p 26379:26379 -v /etc/redis/sentinel.conf:/etc/sentinel.conf -d redis /bin/bash

进入容器,启动服务

# 进入容器
$ docker exec -it sentinel bash
# 启动哨兵
redis-sentinel /etc/sentinel.conf

在master执行shutdown后

slave中的一个从机变为master,一个从机

重启之前的master之后,变为从机:

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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐