docker进redis的主从复制
时间: 2025-01-05 08:33:36 浏览: 14
### 如何在 Docker 中配置 Redis 主从复制
#### 创建必要的目录和文件
为了实现主从复制,需先创建用于挂载的目录以及相应的配置文件。对于主节点(端口6379),应建立如下路径并添加配置文件:
```bash
mkdir -p /home/docker/redis6379/conf
mkdir -p /home/docker/redis6379/data
vi /home/docker/redis6379/conf/redis.conf
```
同样地,针对从节点也需要执行相似的操作来准备环境[^2]。
#### 修改 `redis.conf` 文件
编辑 `/home/docker/redis6379/conf/redis.conf` 和对应的从节点配置文件,在其中指定 masterauth 密码、requirepass 密码以及其他必要参数以确保安全性和正常工作。例如:
```conf
masterauth 123456
requirepass 123456
replicaof 172.17.0.2 6379
```
这里假设主服务器 IP 地址为 `172.17.0.2` 并监听默认端口 `6379`;而从机则会连接到这台主机来进行数据同步[^4]。
#### 使用 Docker Compose 设置服务
编写一个简单的 `docker-compose.yml` 来定义两个 Redis 实例之间的关系:
```yaml
version: '3'
services:
redis-master:
image: "redis:6.0.20"
container_name: redis- "6379:6379"
volumes:
- "/home/docker/redis6379/conf:/usr/local/etc/redis"
- "/home/docker/redis6379/data:/data"
redis-replica:
image: "redis:6.0.20"
container_name: redis-replica
environment:
REDIS_REPLICAOF_HOST: "redis-master"
REDIS_REPLICAOF_PORT: "6379"
command: ["sh", "-c", "echo 'replicaof $$REDIS_REPLICAOF_HOST $$REDIS_REPLICAOF_PORT' | tee -a /usr/local/etc/redis/redis.conf && exec redis-server"]
depends_on:
- redis-master
links:
- redis-master
```
此 YAML 定义了一个名为 `redis-master` 的主实例和服务名叫做 `redis-replica` 的副本实例,并通过链接使它们能够相互通信[^1]。
#### 测试主从状态
启动上述的服务之后可以进入任意一台机器内部查看其角色信息:
对于主节点而言,
```bash
docker exec -a 123456 -c info replication
```
而对于从节点来说,则可以通过命令验证是否成功成为跟随者:
```bash
docker exec -it redis-replica redis-cli -p 6380
```
如果一切顺利的话,应该可以看到关于 slave 或 replica 的相关信息显示出来,表明已经建立了有效的主从关系[^3]。
阅读全文