gpt4 book ai didi

c - 主节点崩溃时如何重新连接到副本集?

转载 作者:行者123 更新时间:2023-11-30 17:55:45 25 4
gpt4 key购买 nike

在这个简单的程序中,我想在主节点崩溃时重新连接到副本集。但它不起作用:如果主节点崩溃,这个程序将立即终止,没有任何输出,并返回141。我不知道为什么。重新连接到副本集的正确方法是什么?

#include <stdio.h>
#include <mongo.h>

int insertVal(mongo *conn, int val) {
bson op[1];
bson_init(op);
bson_append_int(op, "val", val);
bson_finish(op);

int status = mongo_insert(conn, "test.vals", op, NULL);

bson_destroy(op);
return status;
}

int main()
{
mongo conn[1];
mongo_replset_init(conn, "test");
mongo_replset_add_seed(conn, "localhost", 27017);
mongo_replset_add_seed(conn, "localhost", 27018);
mongo_replset_add_seed(conn, "localhost", 27019);
int status = mongo_replset_connect(conn);
if (status != MONGO_OK) {
return 1;
}

for (int i = 0; i < 1000 * 1000; ++i) {
status = insertVal(conn, i);
if (status != MONGO_OK) {
printf("%d\n", status);
--i;
mongo_reconnect(conn);
}
}

mongo_destroy(conn);
return 0;
}

最佳答案

您不需要自己进行mongo_reconnect(conn);这样的数据库管理操作,这可能会导致与mongodb的冲突。

参见Document这里。 “Mongodb 副本集具有自动故障转移功能。如果主副本脱机或变得无响应,并且大多数原始副本集成员仍然可以相互连接,则副本集将选择一个新的主副本”。

关于c - 主节点崩溃时如何重新连接到副本集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com