gpt4 book ai didi

postgresql - 如何在 gorm postgresql 中定义只读副本

转载 作者:行者123 更新时间:2023-12-03 10:01:51 25 4
gpt4 key购买 nike

我在我的应用程序服务器中使用 golang,使用 gorm 作为 ORM。我在 google cloud sql 中使用 postgresql 作为数据库。

我为应用程序服务器正在使用的 postgres 创建了 2 个只读副本。

以前,我使用 node.js 和 sequelize,在那里,我可以将只读副本定义为

    read: [
{ host: '8.8.8.8', username: 'anotherusernamethanroot', password: 'lolcats!' },
{ host: 'localhost', username: 'root', password: null }
],
write: { host: 'localhost', username: 'root', password: null }
},

但是对于 gorm,我没有看到任何方法可以做到这一点(在文档中)。

那么,有没有一种方法可以定义只读副本并且 gorm 会处理它。如果不是,此用例的最佳实践是什么?

最佳答案

现在 Gorm V2 出来了,你可以使用 dbresolver仅用于此用例的插件。复制您作为示例给出的内容将如下所示:

import (
"gorm.io/gorm"
"gorm.io/plugin/dbresolver"
"gorm.io/driver/postgres"
)

db, err := gorm.Open(postgres.Open("host=localhost user=root"), &gorm.Config{})

db.Use(dbresolver.Register(dbresolver.Config{
Replicas: []gorm.Dialector{
postgres.Open("host=8.8.8.8 user=anotherusernamethanroot password=lolcats!"),
postgres.Open("host=localhost user=root"),
},
Policy: dbresolver.RandomPolicy{},
})
查看文档: https://gorm.io/docs/dbresolver.html

关于postgresql - 如何在 gorm postgresql 中定义只读副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56208644/

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