2011-04-29 41 views
1

我只是想知道如何使用MyBatis的主/从MySQL复制数据库。 JDBC提供com.mysql.jdbc.ReplicationDriver(见here),但我无法找出我可以使用类似的事情,包括所有的良好特性我可以配置(roundRobinLoadBalanceautoReconnect的,...)在MyBatis的。使用MySQL复制(主/从)与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> 

任何人都有一个对我一个提示?

感谢您的帮助。

丹尼尔

+0

你有没有试过在'''中使用'ReplicationDriver'? – 2011-04-29 15:40:03

回答

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> 
+0

会试试这个。谢谢。 – High6 2011-04-30 07:28:19

+0

作为URL我也选择了一个有效的复制网址,它工作。例如。 'jdbc:mysql:replication:// master,slave1,slave2/database' – High6 2011-05-04 14:34:43

+0

太棒了。我很高兴它的工作。这是你使用的具体网址吗?如果是这样,我会编辑我的答案。 – Dave 2011-05-04 15:02:02