Ich richte einen Failover-Cluster auf MySQL in einer Master/Slave-Architektur ein. Ich konfiguriere auch meine JBoss Datenquelle, und ich bin auf der Suche nach dem besseren Weg, um meine Verbindung zu testen, in dem Wissen, dass es für Alfresco (die Ibatis verwendet) ist.MySQL-Verbindung Gültigkeitsprüfung in Datenquelle: SELECT 1 oder etwas besser?
Sogar ich praktizierte MySQL viele Male, ich weiß nicht sehr gut Interna Mechanismen der Ausführung in MySQL Server.
Bisher verwende ich diese Abfrage meine SQL-Verbindung zu testen (wie in diesem Thread: Database Fail Over in Jboss Data sources)
SELECT 1;
Hier ist die volle Datenquelle.
<?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>
Ich habe mehrere Fragen, die ich von mir selbst nicht in der Lage bin zu beantworten:
- Wird nicht diese einfache Abfrage durch Ibatis zwischengespeichert werden (oder jede Art oder ORM)? Dies würde bedeuten, dass es mir falsche Ergebnisse zurückgeben könnte.
- Wird diese Abfrage nicht zu einfach sein? Versucht sie wirklich, interne Mechanismen auszuführen, die für die Servergesundheit repräsentativ sind? Oder wird es nur die Verbindung testen?
- Ist es wirklich ein zuverlässiger Test?
- Gibt es eine andere Art von Test (z. B. bereits in Connector/J integriert)?
- Leistung ist für mich auch wichtig, so ist SELECT 1 zwischen Gesundheitscheck und Leistung
Zögern Sie nicht zeigen mir einige Links (innen Stackoverflow oder nicht) ist ein guter Kompromiss. Wenn diese Frage schon beantwortet wurde (es scheint nicht, soweit ich gesucht habe), werde ich diesen Thread natürlich löschen.
Ich wäre sehr dankbar für die Rückkehr der Erfahrung von MySQL Entwickler oder Administratoren. Ich suche nach dem besten Weg, es zu tun.
Danke für Ihre Hilfe.
Großartig! Es ist genau die Art von Tipps, nach denen ich gesucht habe! –
du bist willkommen mann, ich hoffe, es wird mit Ihrer jdbc config passen. – Sebas
Ich werde es so schnell wie möglich versuchen. Il fiel das wird die Antwort sein;). Danke vielmals. –