Redis通过Docker部署后启动失败且无法正常重启求助
Redis从节点同步主节点失败启动异常问题排查与解决
问题现象
在Traefik管理的服务器上通过Docker部署Redis,容器启动后始终失败,仅能通过删除/data/dump.rdb文件后重启容器恢复正常。
错误日志
* Connecting to MASTER 19XXXXXXXXX * MASTER <-> REPLICA sync started * Non blocking connect for SYNC fired the event. * Master replied to PING, replication can continue... * Partial resynchronization not possible (no cached master) * Full resync from master: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ:1 * MASTER <-> REPLICA sync: receiving 54992 bytes from master to disk * MASTER <-> REPLICA sync: Flushing old data * MASTER <-> REPLICA sync: Loading DB in memory # Wrong signature trying to load DB from file # Failed trying to load the MASTER synchronization DB from disk: Invalid argument * Reconnecting to MASTER 19XXXXXXXXX after failure * MASTER <-> REPLICA sync started * Non blocking connect for SYNC fired the event. # Failed to read response from the server: Connection reset by peer # Master did not respond to command during SYNC handshake * Connecting to MASTER 19XXXXXXXXX * MASTER <-> REPLICA sync started * Non blocking connect for SYNC fired the event.
Docker Compose配置
version: '3' services: redis: image: "redis:7.0" container_name: "redis" command: "redis-server" networks: - "traefik" restart: "always" ports: - '6379:6379' volumes: - "/root/redis/data:/data" labels: - "traefik.enable=true" - "com.centurylinklabs.watchtower.enable=false"
问题分析与解决建议
- 核心问题:从节点同步主节点数据时,接收的RDB文件签名错误,无法加载,导致容器进入失败重连循环。
- 可能原因:
- 主节点的
dump.rdb文件本身损坏,同步到从节点后无法解析 - 主从节点Redis版本不兼容(从节点为7.0,主节点版本可能存在格式差异)
- 网络传输过程中RDB文件出现丢包或篡改
- 主节点的
- 解决步骤:
- 核对主节点Redis版本,确保与从节点(7.0)一致或版本兼容,不同大版本的RDB格式可能不互通
- 在主节点手动备份
dump.rdb后,执行BGSAVE命令重新生成干净的RDB文件,再重启从节点尝试同步 - 临时将从节点的
restart: always改为restart: no,避免循环启动浪费资源,排查完成后再改回 - 若主节点RDB文件确已损坏,可先删除主节点的
dump.rdb并重启主节点,待主节点正常运行后再让从节点同步
内容的提问来源于stack exchange,提问作者garrym
相关产品推荐
相关产品推荐

