目录
第一篇: 主从复制
二. 实践操作
1. 准备工作
-> ps: 安装redis的文章: docker版 的redis安装
2. 制作docker镜像
-> 2.1 制作redis6379
-> 2.2 制作redis6380
-> 2.3 制作redis6381
3. 查看主镜像redis6379的ip地址
-> 3.1 IPAddress位置在这:
4. 检测redis服务角色(master/slave)
->4.1 效果[如图所示]:
-> 4.2 参数解释:
5. 换终端, 登录 redis6380 和 redis6381 容器
-> 5.1 如果主master有登录密码,并且没有修改过slave的redis.conf
-> 5.2 然后重启docker容器后登录redis-cli
-> 5.3 设置主master服务
-> 5.4 显示ok后 进入redis-cli (有密码先auth)
-> 5.5 效果[如图所示]:
-> ps: 参数解释:
6. 测试 多容器的数据一致性
7. 总结:
-> 7.1 主服务master可以读写 从服务slave 只能读, 并且数据同步 即为成功
-> 7.2 启动先启动主服务 在启动从服务
-> 7.3 注意: 如 slave从服务 重启, 需重新执行第5步, 主从关系重启后失效
一. redis: 主从复制
简介:主从复制,是指将一台Redis服务器的数据复制到其他的Redis服务器。前者称为主节点(
Master
/Leader
),后者称为从节点(Slave
/Follower
);数据是从主节点复制到从节点的。(与哨兵共同使用, 现在是主从redis搭建)
-> 如图所示
-> 下一篇: redis: 哨兵-------- 路径暂无,之后补充
二. 实践操作
1. 准备工作
找到之前的redis的配置文件夹
-> ps: 安装redis的文章: docker版 的redis安装
复制出redis01
复制出redis02
复制出redis03
2. 制作docker镜像
-> 2.1 制作redis6379
docker run -p 6379:6379 --name redis6379 \
-v /usr/local/src/docker/redis01/data:/data \
-v /usr/local/src/docker/redis01/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes
-> 2.2 制作redis6380
docker run -p 6380:6379 --name redis6380 \
-v /usr/local/src/docker/redis02/data:/data \
-v /usr/local/src/docker/redis02/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes
-> 2.3 制作redis6381
docker run -p 6381:6379 --name redis6381 \
-v /usr/local/src/docker/redis03/data:/data \
-v /usr/local/src/docker/redis03/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes
3. 查看主镜像redis6379的ip地址
docker inspect redis6379
-> 3.1 IPAddress位置在这:
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "7f683725b9f21729d1247e7f8a70b2679a8d2e8b2132bbe275e72d69334c07d6",
"EndpointID": "f112f2321ca26fe13e5b50ba4a405d64d0786a9cd2dbb7d6b1ce7511f6b85420",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
4. 检测redis服务角色(master/slave)
docker exec -it redis6379 redis-cli
auth 自己的密码(没有不写)
info replication
->4.1 效果[如图所示]:
-> 4.2 参数解释:
role: 当前是主服务
connected_slaves 表示连接的从服务0
5. 换终端, 登录 redis6380 和 redis6381 容器
-> 5.1 如果主master有登录密码,并且没有修改过slave的redis.conf
需要修改一下配置:
搜索: masterauth <自己设置的主redis的密码>(可以不设置)设置密码: requirepass <自己设置从redis服务的密码,登录从服务器也需要密码了>
-> 5.2 然后重启docker容器后登录redis-cli
docker restart redis6380 [或者6381]
-> 5.3 设置主master服务
slaveof host port [参数一: 主服务ip地址 参数二: 端口号(宿主机)]
-> 5.4 显示ok后 进入redis-cli (有密码先auth)
执行 info replication
-> 5.5 效果[如图所示]:
-> ps: 参数解释:
role: 当前是从服务slave
master_host 主服务的ip
master_port 主服务的端口
6. 测试 多容器的数据一致性
现在制作的是 一主两从
[冷链 rdb一次性快照, aof单次指令同步]