我设置了一个故障转移群集上的MySQL,在主/从结构。 我也在我的配置JBoss的数据源,和我在寻找更好的方式来测试我的连接,知道它是露天(这是使用iBATIS)。
即使我praticed MySQL的很多次,我不知道相当不错,在MySQL服务器执行的内部机制。
(:在这个线程就像到目前为止,我使用这个查询来测试我的SQL连接到JBoss数据源数据库故障转移 )
SELECT 1;
这里完整的数据源。
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>alfresco-datasource</jndi-name>
<connection-url>
jdbc:mysql://10.1.2.13,10.1.2.14:3306/alfresco
</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>alfresco</user-name>
<password>alfresco</password>
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
</exception-sorter-class-name>
<connection-property name="readOnly">false</connection-property>
<failOverReadOnly>false</failOverReadOnly>
<!-- Automatic reconnecion - desactivated to preserve transactions -->
<!-- http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html :
Failover happens when the driver determines that the connection has failed (checked before every query), and falls back to the first host when it determines that the host has become available again (after queriesBeforeRetryMaster queries have been issued). -->
<!--<autoReconnect>true</autoReconnect>-->
<check-valid-connection-sql>SELECT 1</check-valid-connection-sql>
<valid-connection-checker-class-name>
org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker
</valid-connection-checker-class-name>
<!-- If you're using Connector/J 3.1.8 or newer, you can use our implementation
of these to increase the robustness "mysql-ds.xml" 64L, 3683C of the connection
pool. -->
<exception-sorter-class-name>
com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter
</exception-sorter-class-name>
<valid-connection-checker-class-name>
com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker
</valid-connection-checker-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
我有我不能由我自己来回答多个问题:
- 这会不会简单的查询,通过驿站(或任何种类或ORM)被缓存? 这意味着,它可以返回我错误的结果。
- 不就是查询是太简单了? 难道真的试图执行,这将是代表服务器运行状况的内部机制? 还是会仅测试连接?
- 难道真的是一个可靠的测试?
- 是否有任何其他类型的测试中(已经与连接器/ J集成为例)?
- 性能对我来说也很重要,所以选择1是健康检查和性能之间的良好折衷
不要犹豫,指向我了一些链接(内部或#1没有)。 如果这个问题有豆已经回答了(这似乎不是,因为我搜索远),我显然会删除此线程。
我将非常感激的MySQL developpers或管理员exeperience的回报。 我在寻找做到这一点的最好办法。
谢谢你的帮助。