MySQL кластеризация и JBOSS
Мне нужно настроить кластеризацию JBOSS для MySQL с базами данных на двух разных машинах (т.е. разных IP).
Активно-активная конфигурация БД желательна с -
Оба БД будут обновляться одновременно
Балансировки нагрузки
Обработка отказа - переключиться на другой БД в случае отказа 1 -го БД
Как мне настроить файл mysql-ds.xml для достижения всего этого? Только это решит мою проблему или нужно будет внести какие-либо другие изменения в конфигурацию?
До сих пор я пробовал следующее, но без особого успеха -
Пример кода 1 -
<local-tx-datasource>
<jndi-name>/abc</jndi-name>
<connection-url>jdbc:mysql:loadbalance://ip1:portno1,ip2:portno2/dbname?loadBalanceBlacklistTimeout=5000</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>def</user-name>
<password>defpassword</password>
<exception-sorter-class-name>path to exception sorter class</exception-sorter-class-name>
</local-tx-datasource>
Пример кода 2 -
<local-tx-datasource>
<jndi-name>/abc</jndi-name>
<connection-url>jdbc:mysql:loadbalance://ip1:portno1,ip2:portno2/dbname?loadBalanceBlacklistTimeout=5000</connection-url>
<url-delimiter>|</url-delimiter>
<autoReconnect>true</autoReconnect>
<failOverReadOnly>false</failOverReadOnly>
<maxReconnects>0</maxReconnects>
<initialTimeout>15</initialTimeout>
<idle-timeout-minutes>0</idle-timeout-minutes>
<connection-property name="readOnly">false</connection-property>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>def</user-name>
<password>defpassword</password>
<exception-sorter-class-name>path to exception sorter class</exception-sorter-class-name>
</local-tx-datasource>
Что еще требуется?
Спасибо
1 ответ
Вы можете достичь этого только с помощью конфигурации файла источника данных mysql-ds.xml. Что вам нужно сделать, это следовать.
Примечание. Вам придется использовать mysql-connector-java-5.1.13-bin.jar и выше для драйвера базы данных. В более ранних версиях есть какая-то ошибка ( http://bugs.mysql.com/bug.php?id=31053), которая поставит вас перед множеством проблем, поэтому избегайте их. Я предоставляю фрагмент для файла mysql-ds.xml.
<local-tx-datasource>
<jndi-name>DATA_SOURCE_NAME</jndi-name>
<connection-url>jdbc:mysql:loadbalance://IP1:port1,IP2:port2</connection-url>
<user-name>username</user-name>
<password>password</password>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<check-valid-connection-sql>select count(*) from your_table_name</check-valid-connection-sql>
</local-tx-datasource>