사용자 도구

사이트 도구


java:jdbc:replication

문서의 이전 판입니다!


Java JDBC Replication Connection Pool(DataSource)

Master/Slave (Write/Read) replication connection pool 구현 방법.

Springframework

Spring 프레임워크를 사용할 경우에는 AbstractRoutingDataSourceLazyConnectionDataSourceProxy를 조합하면 @Transactional(readOnly=true|false)로 Master/Slave 커넥션을 선언적으로 조정 가능하다.

import org.springframework.transaction.support.TransactionSynchronizationManager;
 
public class ReplicationRoutingDataSource extends AbstractRoutingDataSource {
    @Override
    protected Object determineCurrentLookupKey() {
        return TransactionSynchronizationManager.isCurrentTransactionReadOnly() ? "slave" : "master";
    }
}
 
DataSource masterDataSource = ...;
DataSource slaveDataSource = ...;
 
// @Bean으로 생성
ReplicationRoutingDataSource rrds = new ReplicationRoutingDataSource();
 
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put("master", masterDataSource);
targetDataSources.put("slave", slaveDataSource);
rrds.setTargetDataSources(targetDataSources);
rrds.setDefaultTargetDataSource(masterDataSource);
 
// 최종 실 사용 DataSource는 LazyConnectionDataSourceProxy 로 감싸야한다.
DataSource dataSource = new LazyConnectionDataSourceProxy(rrds);
java/jdbc/replication.1419512100.txt.gz · 마지막으로 수정됨: 2014/12/25 21:55 저자 kwon37xi