基于Docker的Redis容器主从复制搭建
一. 一主机两从机1.首先创建Redis容器:2.配置两个从机的配置文件redis.conf:replicaof ip地址 端口号masterauth 主机密码3.测试查看info replication主机输入后显示:从机输入后显示:在主机输入数据:在从机查看数据:二.薪火相传式连接1.命令连接在第一个从机输入:slaveof 182.92.0.84 6382在第二个从机输入:slaveof 1
一. 一主机两从机
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、机器数量的增加也会使这个问题更加严重。
更多推荐
所有评论(0)