第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MongoDB Go驅(qū)動程序在不應(yīng)該的時候?qū)ふ冶镜刂鳈C

MongoDB Go驅(qū)動程序在不應(yīng)該的時候?qū)ふ冶镜刂鳈C

Go
拉風(fēng)的咖菲貓 2023-07-17 17:09:50
我不是 Go 人,只需要使用用 Go 編寫的插件,我在插件和 MongoDB 之間遇到了一些麻煩。錯誤是:server selection error: server selection timeoutcurrent topology: Type: UnknownServers:Addr: localhost:27017, Type: Unknown, State: Connected, Avergage RTT: 0, Last error: dial tcp 127.0.0.1:27017: connect: connection refusedexit status 1我的配置:time=“2019-09-03T16:29:35Z” level=debug msg=“Host: ip-XXX-XX-XX-XXX.sa-east-1.compute.internal”time=“2019-09-03T16:29:35Z” level=debug msg=“Port: 27017”time=“2019-09-03T16:29:35Z” level=debug msg=“Username: user”time=“2019-09-03T16:29:35Z” level=debug msg=“Password: user123*”time=“2019-09-03T16:29:35Z” level=debug msg=“DBName: dbBackend”執(zhí)行連接的插件代碼段:addr := fmt.Sprintf("mongodb://%s:%s", m.Host, m.Port)to := 60 * time.Secondopts := options.ClientOptions{    ConnectTimeout: &to,}opts.ApplyURI(addr)if m.Username != "" && m.Password != "" {    opts.Auth = &options.Credential{        AuthSource:  m.DBName,        Username:    m.Username,        Password:    m.Password,        PasswordSet: true,    }}client, err := mongo.Connect(context.TODO(), &opts)if err != nil {    return m, errors.Errorf("couldn't start mongo backend. error: %s\n", err)}err1 := client.Ping(context.TODO(), nil)if err1 != nil {        log.Fatal(err1) // error happens here} log.Debugf("MONGO CONNECTED")m.Conn = clientreturn m, nil如果我正在設(shè)置 mongoDB 服務(wù)器的地址,我只是無法意識到為什么 mongo 驅(qū)動程序會在本地主機上查找。
查看完整描述

1 回答

?
嗶嗶one

TA貢獻(xiàn)1854條經(jīng)驗 獲得超8個贊

為什么 mongo 驅(qū)動程序在 localhost 上尋找,如果我正在設(shè)置 mongoDB 服務(wù)器的地址。

當(dāng)mongo-go-driver的客戶端連接到MongoDB部署時,它將執(zhí)行服務(wù)器發(fā)現(xiàn)和監(jiān)控以發(fā)現(xiàn)一個或多個服務(wù)器(MongoDB本質(zhì)上是一個分布式數(shù)據(jù)庫)。早期步驟之一是通過在所有服務(wù)器上調(diào)用?isMaster 命令來開始監(jiān)視拓?fù)?。根?jù)isMaster的輸出,客戶端將嘗試聯(lián)系這些服務(wù)器。對于副本集(您的情況),客戶端會努力連接到主服務(wù)器(從?isMaster.primary)。

但是,主機名地址不是可從客戶端計算機解析的完全限定域名 (FQDN)??蛻舳说挠嬎銠C嘗試連接到定義為副本集的主副本集,因此無法建立連接。此外,這就是為什么您會看到消息狀態(tài),其中 但是 .即使在能夠選擇要執(zhí)行命令的服務(wù)器 (localhostcurrent topology: Type: UnknownState: Connectedping)

您可以通過為副本集配置中的成員字段的值設(shè)置可解析的主機名來解決此問題。此外,如果可能,請使用邏輯 DNS 主機名而不是 IP 地址,因為這可以避免由于 IP 地址更改而導(dǎo)致的配置更改。

您可以使用?rs.reconfig()?更改副本集主機名,即:

cfg?=?rs.conf()
cfg.members[1].host?=?"<RESOLVABLE?HOSTNAME>:<PORT?NUMBER>"
rs.reconfig(cfg)

在您的情況下,只有一個副本集成員,這很簡單。但是,如果您處于生產(chǎn)模式并且有多個成員,則可以按照更改副本集中的主機名中概述的步驟進(jìn)行操作,其中有兩個選項:

  • 在不中斷可用性的情況下更改主機名

  • 同時更改主機名(一次性)

說了上面的所有解釋, 或者,由于副本集部署只有一臺服務(wù)器(開發(fā)模式),因此可以通過?ClientOptions.SetDirect()?將連接模式設(shè)置為它指定客戶端是否應(yīng)直接連接到服務(wù)器,而不是自動發(fā)現(xiàn)群集中的其他服務(wù)器(盡管這意味著您沒有冗余),即:direct

opts?:=?options.ClientOptions{?ConnectTimeout:?&timeoutVariable}
opts.SetDirect(true)
opts.ApplyURI(addr)

client,?err?:=?mongo.Connect(connect.TODO(),?&opts)


查看完整回答
反對 回復(fù) 2023-07-17
  • 1 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號