【发布时间】:2020-12-29 15:22:09
【问题描述】:
我有一个 springboot 应用程序,它连接到 Azure SQL 数据库。我想设置 Azure SQL Server 的自动故障转移。
我在区域 A 中有 primary sql server1 (server1.database.windows.net),只有一个 db("demo")。 然后,我通过在区域 B 中为同一数据库创建 辅助服务器 2 (server2.database.windows.net) 为服务器 1 设置自动故障转移组。 p>
目前使用以下 JDBC 连接字符串进行配置:
jdbc:sqlserver://<my-failover-group-name>:1433;database=demo;encrypt=true;trustServerCertificate=false;loginTimeout=30;applicationIntent=ReadWrite;
Hikari CP 的连接能够通过上述连接字符串连接到我的主数据库,但是当我在 azure 门户上进行手动故障转移时,数据库连接应自动重新连接到已变为的辅助服务器现在主要,但我不断收到以下异常:-
com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.
- mssql-jdbc 版本:- 8.2.2.jre8
- Springboot 版本:- 2.2.2.RELEASE
【问题讨论】:
-
我已经阅读了您之前的帖子。我也有 springboot 应用程序和故障转移组,我在两个数据库服务器之间创建了相同的用户名和密码。当我在 azure 门户上进行手动故障转移时,我的 springboot 应用程序将自动连接到数据库服务器。所以我建议使用相同的用户名和密码来解决问题。
-
连接到故障转移组就像连接到一个数据库服务器,而把其他事情留给它。
-
@JosephXu,两台服务器的用户名和密码相同。只是主要和次要的服务器名称不同。最终的用户名将分别是 user@server1 和 user@server2。发生故障转移时,我可以使用数据库客户端连接到提到的故障转移组。只是一旦我进行故障转移,与数据库的连接就会给我 SQLErrorException 说连接已关闭。并且这些连接不会被修复以连接到最新的服务器。
-
请将“user@server1”和“user@server2”改为“user”。效果很好。
-
@Joseph Xu,刚刚尝试为两个服务器使用单用户“演示”,它不允许我连接并在发生故障转移时给出相同的异常。你建议的任何其他方式。可能是 Hikari CP 错误或任何配置错误?
标签: sql-server spring-boot azure-sql-database hikaricp mssql-jdbc