MySQL数据库读写分离主要利用了MySQL提供的Java客户端的ReplicationDriver的特性。
简单的读写分离改造方案:
1、使用DBCP的数据库连接池(DBCP2暂时不支持)
2、数据源配置成:
jdbc:mysql:replication://localhost:3306,localhost:3307/test?autoReconnect=true&characterEncoding=utf-8&useUnicode=true&zeroDateTimeBehavior=convertToNull
第一个地址为主库,后面的为从库,从库可以配置多个
3、通过Spring的事务配置,所有readOnly = true的都会通过从库查询,如果从库有多个,会在多个从库中选一个进行查询。
数据源配置:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.ReplicationDriver" /> <property name="url" value="jdbc:mysql:replication://localhost:3306,localhost:3307/test?autoReconnect=true&characterEncoding=utf-8&useUnicode=true&zeroDateTimeBehavior=convertToNull" /> <property name="username" value="root" /> <property name="password" value="test" /> </bean>
备注:
hibernate.connection.release_mode不能设置为after_transaction
hibernate.transaction.auto_close_session不能设置为true
本文出自 “浪子恒心” 博客,请务必保留此出处http://nettm.blog.51cto.com/4841905/1715854
原文:http://nettm.blog.51cto.com/4841905/1715854