Использование репликации MySQL (Master / Slave) с MyBatis - PullRequest
1 голос
/ 29 апреля 2011

Мне просто интересно, как я могу использовать базу данных репликации Master / Slave MySQL с 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>

Кто-нибудь намекает на меня?

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

Daniel

1 Ответ

1 голос
/ 29 апреля 2011

ДРУГОЙ ВОЗМОЖНЫЙ ОТВЕТ

Если вы заметили, свойства, которые вы устанавливаете в 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>
...