重启后复制异常:SYNC节点误识别为MAIN角色
解决Memgraph副本重启后变为MAIN角色的问题
问题原因
Memgraph的复制角色配置默认是运行时临时设置的,重启后会恢复为默认的MAIN角色,除非通过配置文件或启动参数持久化指定副本角色。
解决步骤
停止当前Insta3容器
先查看容器ID:docker ps停止容器:
docker stop <insta3_container_id>重新以副本角色启动Insta3
选择以下两种方法之一:- 方法一:启动命令直接指定参数
替换<insta1_internal_ip>为Insta1的Docker内部IP(可通过docker inspect <insta1_container_id> | grep "IPAddress"查询),执行启动命令:docker run -it -p 7689:7687 -p 3002:3000 -v mg_lib3:/var/lib/memgraph memgraph/memgraph-platform \ --replication-role=REPLICA \ --replication-main-address=<insta1_internal_ip>:7687 \ --replication-sync-mode=SYNC - 方法二:通过持久化配置文件启动
- 从容器导出默认配置文件:
docker cp <insta3_container_id>:/etc/memgraph/memgraph.conf ./memgraph3.conf - 编辑
memgraph3.conf,添加或修改以下参数:--replication-role=REPLICA --replication-main-address=<insta1_internal_ip>:7687 --replication-sync-mode=SYNC - 挂载配置文件重启容器:
docker run -it -p 7689:7687 -p 3002:3000 \ -v ./memgraph3.conf:/etc/memgraph/memgraph.conf \ -v mg_lib3:/var/lib/memgraph \ memgraph/memgraph-platform
- 从容器导出默认配置文件:
- 方法一:启动命令直接指定参数
验证角色状态
进入Insta3的Cypher Shell:docker exec -it <insta3_container_id> cypher-shell执行查询确认角色:
SHOW REPLICATION STATUS;输出中应显示角色为
REPLICA,且已连接到主节点。
预防措施
- 所有副本节点启动时,通过配置文件或启动参数明确指定
--replication-role=REPLICA,避免重启后角色重置。 - 确保主节点地址配置正确,副本能正常与主节点建立连接并同步数据。
内容的提问来源于stack exchange,提问作者MasaZo
相关产品推荐
相关产品推荐

