
dvassilenko/mongo-delayed-secondary本镜像提供一个预配置的副本集环境,包含1个主节点(Primary)和1个人为延迟的从节点(Secondary with artificial delay)。延迟从节点通过配置同步延迟参数,模拟主从数据同步过程中的滞后场景,可用于开发、测试环境中验证延迟相关功能及故障处理机制。
| 环境变量名 | 描述 | 默认值 | 取值范围 |
|---|---|---|---|
REPLICA_SET_NAME | 副本集名称 | rs0 | 字符串 |
DELAY_SECONDS | 从节点同步延迟时间(秒) | 30 | 正整数(≥0) |
PRIMARY_PORT | 主节点对外暴露端口 | 27017 | 1024-65535 |
SECONDARY_PORT | 从节点对外暴露端口 | 27018 | 1024-65535 |
DATA_VOLUME_PATH | 数据持久化挂载路径 | /data/db | 容器内合法路径 |
bashdocker run -d \ --name delayed-replica-set \ -p 27017:27017 \ -p 27018:27018 \ -e REPLICA_SET_NAME=test-rs \ -e DELAY_SECONDS=60 \ # 设置60秒同步延迟 -v ./replica-data:/data/db \ # 挂载数据卷持久化数据 [镜像名称]:[标签]
yamlversion: '3.8' services: replica-set: image: [镜像名称]:[标签] container_name: delayed-replica-set ports: - "27017:27017" # 主节点端口映射 - "27018:27018" # 延迟从节点端口映射 environment: - REPLICA_SET_NAME=test-rs - DELAY_SECONDS=60 # 自定义延迟时间(秒) - DATA_VOLUME_PATH=/data/db volumes: - ./replica-data:/data/db # 数据持久化卷 restart: unless-stopped networks: - replica-network networks: replica-network: driver: bridge
通过 MongoDB 客户端连接主节点:
bashmongo --host localhost --port 27017
在 MongoDB 客户端中执行以下命令,验证副本集配置及延迟参数:
javascriptrs.status() // 查看节点状态及角色 rs.conf() // 查看副本集配置(确认从节点 delay 字段值)
javascriptuse testdb db.demo.insertOne({ "timestamp": new Date() })
bashmongo --host localhost --port 27018 # 连接从节点 use testdb db.demo.find() # 延迟时间内无结果,延迟后可查询到数据
rs.reconfig() 修改节点优先级参数A: 可通过两种方式修改:
DELAY_SECONDS 环境变量指定rs.reconfig() 命令更新配置:
javascriptvar config = rs.conf() config.members[1].secondaryDelaySecs = 120 // 修改第2个节点(从节点)延迟为120秒 rs.reconfig(config)
A: 延迟从节点默认优先级(priority)设为0,需将其优先级调整为大于0的值(如1)并重启副本集选举流程。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务