Prisma连接Mongo副本集,主节点切换后无法写入问题求助
解决Prisma连接Mongo副本集主节点切换后无法写入的问题
升级Prisma到最新稳定版
旧版本Prisma可能存在副本集拓扑感知缺陷,无法及时检测主节点切换。执行以下命令升级:npm install prisma@latest npx prisma generate在连接字符串中启用重试写入
添加retryWrites=true参数,让底层Mongo驱动在主节点切换时自动重试写入操作,自动发现新主节点。修改后的连接字符串示例:mongodb://username:password@example.com:11995,example.com:11993,example.com:11992/database?authSource=database&replicaSet=setName&retryWrites=true验证副本集名称一致性
确认连接字符串中replicaSet=setName的名称与副本集实际名称完全匹配。可登录Mongo节点执行rs.conf(),查看_id字段获取正确的副本集名称。调整Prisma连接池配置
在schema.prisma的数据源配置中添加连接池超时与大小设置,促使连接池及时回收指向旧主节点的失效连接:datasource db { provider = "mongodb" url = env("DATABASE_URL") pool_timeout = 30 // 超时时间按需调整,单位秒 pool_size = 10 // 合理设置连接池大小,避免过多无效连接 }确认副本集切换完成状态
主节点切换后,通过rs.status()命令检查新主节点(example.com:11992)的状态是否为PRIMARY,且集群所有节点已完成数据同步。若切换未正常完成,Prisma无法正确识别新主节点。
内容的提问来源于stack exchange,提问作者Cyrille keith
相关产品推荐
相关产品推荐

