akka 在运行时重新加载postgres数据库配置

dm7nw8vv  于 2023-06-22  发布在  其他
关注(0)|答案(2)|浏览(161)

我正在使用一个greenplum集群,在那里你可以提交查询只给主。我在application.conf中有主节点ip。但是由于高可用性等原因,主节点的IP切换到不同的机器。
application.conf条目:

database = {
  connectionPool = "HikariCP"
  dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
  properties = {
    serverName = "103.10.11.6"
    portNumber = "5432"
    databaseName = "test"
    currentSchema = "public"
    user = "user"
    password = "user123"
  }
  numThreads = 10
}

现在使用以下命令加载:

val db = Database.forConfig("database")

我可以捕获ConnectionException或ping机器并识别当前主机的IP。
但是,我如何在配置中覆盖serverName变量并在运行时重新加载。
这是一个好的设计吗?

k5ifujac

k5ifujac1#

您应该将域名而不是IP地址设置为serverName。此域记录必须指向主服务器。这种方法将大部分高可用性问题留在网络级别上,而不会将它们泄露到应用程序代码中。

k5hmc34c

k5hmc34c2#

在运行时,您可以使用命令SELECT pg_reload_conf();重新加载PostgreSQL配置,而不使用命令行。我发现这个页面有更多的信息:https://www.heatware.net/postgresql/postgresql-reload-config-without-restarting/

相关问题