基于Docker的Redis容器主从复制搭建

2021/4/30 2:27:02

本文主要是介绍基于Docker的Redis容器主从复制搭建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一. 一主机两从机

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、机器数量的增加也会使这个问题更加严重。



这篇关于基于Docker的Redis容器主从复制搭建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程