Использование репликации MySQL (Master / Slave) с MyBatis

Мне просто интересно, как я могу использовать базу данных репликации MySQL Master / Slave с MyBatis. JDBC предлагает com.mysql.jdbc.ReplicationDriver (см. здесь), но я не мог найти, где можно использовать подобные вещи, включая все хорошие свойства, которые я могу настроить (roundRobinLoadBalance, autoReconnect, ...) в MyBatis .

В настоящее время я настроил свою нереплицируемую базу данных в MyBatis следующим образом:

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver" />
            <property name="url"
                value="jdbc:mysql://localhost:3306/database" />
            <property name="username" value="root" />
            <property name="password" value="" />
        </dataSource>
    </environment>
    <environment id="production">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.jdbc.Driver" />
            <property name="url"
                value="jdbc:mysql://xxx:3306/database" />
            <property name="username" value="production" />
            <property name="password" value="" />
        </dataSource>
    </environment>
</environments>

Кто-нибудь может мне подсказать?

Спасибо за вашу помощь.

Даниэль


person H6.    schedule 29.04.2011    source источник
comment
вы пробовали использовать ReplicationDriver в <property name="driver">?   -  person matt b    schedule 29.04.2011


Ответы (1)


ЕЩЕ ОДИН ВОЗМОЖНЫЙ ОТВЕТ

Если вы заметили, свойства, которые вы устанавливаете в xml для драйвера, также являются общими свойствами, установленными и переданными в jdbc. Так что я не удивлюсь, если MyBatis просто возьмет их и пропустит прямо в водителя. Так что, может быть, попробуйте это:

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <!-- Just use ReplicationDriver -->
            <property name="driver" value="com.mysql.jdbc.ReplicationDriver" />
            <property name="url"
                value="jdbc:mysql://localhost:3306/database" />
            <property name="autoReconnect" value="true" />
            <property name="roundRobinLoadBalance" value="true" />
            <property name="username" value="root" />
            <property name="password" value="" />
        </dataSource>
    </environment>
    <environment id="production">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <!-- Just use ReplicationDriver -->
            <property name="driver" value="com.mysql.jdbc.ReplicationDriver" />
            <property name="url"
                value="jdbc:mysql://xxx:3306/database" />
            <property name="autoReconnect" value="true" />
            <property name="roundRobinLoadBalance" value="true" />
            <property name="username" value="production" />
            <property name="password" value="" />
        </dataSource>
    </environment>
</environments>
person Dave    schedule 29.04.2011
comment
В качестве URL-адреса я также выбрал действующий URL-адрес репликации, и он сработал. Например. jdbc:mysql:replication://master,slave1,slave2/database - person H6.; 04.05.2011
comment
Потрясающие. Я рад, что это сработало. Это конкретный URL-адрес, который вы использовали? Если это так, я отредактирую свой ответ. - person Dave; 04.05.2011
comment
Да, с заменой master и slave1 / slave2 моими URL-адресами. И мне нужно было удалить <property name="autoReconnect" value="true" /> и <property name="roundRobinLoadBalance" value="true" />, потому что они не были найдены. Но я попробую все настроить как следует. - person H6.; 05.05.2011