我正在尝试将我的 Scala 应用程序连接到由一个主节点和 3 个从属/只读副本组成的 Postgres 集群。我的 application.conf 今天看起来像这样:
slick {
dbs {
default {
driver = "com.company.division.db.ExtendedPgDriver$"
db {
driver = "org.postgresql.Driver"
url = "jdbc:postgresql://"${?DB_ADDR}":"${?DB_PORT}"/"${?DB_NAME}
user = ${?DB_USERNAME}
password = ${?DB_PASSWORD}
}
}
}
}
根据Postgres 的文档,我可以在一个 JDBC URL 中定义 master 和 slave,这会给我一些故障转移功能,如下所示:
jdbc:postgresql://host1:port1,host2:port2/database
但是,如果我想通过读写能力来分离我的连接,我必须定义两个 JDBC URls,如下所示:
jdbc:postgresql://node1,node2,node3/database?targetServerType=master
jdbc:postgresql://node1,node2,node3/database?targetServerType=preferSlave&loadBalanceHosts=true
如何在 Slick 中定义两个 JDBC URL?我应该在 slick.dbs 下定义两个单独的实体,还是我的 slick.dbs.default.db 实体可以定义多个多个 URL?