Skip to end of metadata
Go to start of metadata

中文标题【从关闭的连接中恢复】


当数据库服务器进行重启或者因为网络问题导致连接中断。所有在数据库连接池中的连接都会被中断。希望处理这个问题,通常需要 Confluence 进行重启。

但是,数据库连接池中的连接可以通过运行 SQL 查询来进行校验。如果在数据库连接池中的连接因为某种原因被中断,通常可以通过在连接池中创建一新的连接来解决。

希望达到这个目的,Confluence 会为你的数据库连接运行校验 SQL。这个配置在新的 Confluence 安装中是默认启动的(Confluence 6.5 及后续版本)。但是如果你是从老的 Confluence 升级上来的话,你可以通过下面的步骤来手动启用这个配置。

针对你的数据库类型确定校验 SQL

不同的数据库通常要求不同的 SQL 校验查询。校验查询通常需要尽可能的简单,这个查询在链接从数据库连接池中取出的时候都会被执行一次。

针对不同的数据库类型,我们推荐先的校验查询 SQL:

数据库类型

校验查询

MySQL

select 1

Microsoft SQL Server

select 1

Oracle

select 1 from dual

PostgreSQL

select 1

从你的 JDBC 连接中直接启用校验查询

确定 Confluence 在数据库连接池中校验数据库连接:

  1. 停止 Confluence。
  2. 编辑 <home-directory>confluence.cfg.xml 文件。
  3. 针对你特定的数据库,插入下面属性配置信息。

    针对 PostgreSQL,SQL Server,和 MySQL
    <property name="hibernate.c3p0.validate">true</property>
    <property name="hibernate.c3p0.preferredTestQuery">select 1</property>
    针对 Oracle
    <property name="hibernate.c3p0.validate">true</property>
    <property name="hibernate.c3p0.preferredTestQuery">select 1 from dual</property>
  4. 保存 confluence.cfg.xml
  5. 如果你使用 Confluence 5.10.3 或者早期版本,你需要添加下面的内容到你的 system property 来校验你的数据库。
    例如:

    -Dc3p0.preferredTestQuery="select 1"
  6. 重启 Confluence. 

你应该可以从中断的数据库连接中重新获得所有的数据库连接而不需要重启 Confluence。

在数据源连接中启用校验查询

确定 Confluence 在数据库连接池中校验数据库连接:

  1. 停止 Confluence。

  2. 编辑 <installation-directory>/conf/server.xml 文件(或者基于在那里你配置你的数据源)。
  3. 针对你的额数据源找到 Resource 元素,然后添加 "validationQuery" 参数,下面的配置是针对 PostgreSQL 数据库的,其他的数据库的配置也类似。请记住针对你数据库类型配置正确的值。

    server.xml (excerpt)
    ... 
    <Resource name="jdbc/confluence" auth="Container" type="javax.sql.DataSource"
              username="postgres"
              password="postgres"
              driverClassName="org.postgresql.Driver"
              url="jdbc:postgresql://localhost:5432/yourDatabaseName"
              maxTotal="60"
              maxIdle="20"
              validationQuery="select 1" />
    ...
  4. 保存 conf/server.xml

  5. 重启 Confluence.

你应该可以从中断的数据库连接中重新获得所有的数据库连接而不需要重启 Confluence。



  • No labels