MySql Master / Slave 구조 설정이 생각보다 쉽지 않았다.
열심히 구글링 한 결과 까먹지 말자 블로그(http://kwon37xi.egloos.com/) 도착해 소스를 발견 하여 적용 해봤는데
잘되는듯 하다.
import javax.sql.DataSource;
import net.sf.log4jdbc.Log4jdbcProxyDataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
/**
* {@link kr.pe.kwonnam.replicationdatasource.LazyReplicationConnectionDataSourceProxy} 를 통한 리플리케이션 테스트 설정
* *
* 동일한 테이블에 동일한 양의 데이터가 들어있지만 쓰기쪽은 write_x 읽기 쪽은 read_x 라는 형태의 name 컬럼 데이터를
* 가지도록 조작한 두 개의 데이터 소스를 생성한다.
* <p/>
* 실전 환경에서는 writeDataSource는 Master DB를, readDataSource는 Slave DB를 바라보는 커넥션 풀이어야 한다.
*/
@Configuration
@ComponentScan
public class ContextDataSource {
@Bean(destroyMethod="close")
public DataSource wirteDataSource(){
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
basicDataSource.setUrl("jdbc:mysql://192.168.0.1/dbName");
basicDataSource.setUsername("daisy");
basicDataSource.setPassword("2016Daisy!");
return basicDataSource;
}
@Bean(destroyMethod="close")
public DataSource readDataSource(){
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
basicDataSource.setUrl("jdbc:mysql://192.168.0.1/dbName");
basicDataSource.setUsername("daisy");
basicDataSource.setPassword("2016Daisy!");
return basicDataSource;
}
@Autowired
@Bean
public DataSource dataSourceSpied(@Qualifier("wirteDataSource") DataSource writeDataSource, @Qualifier("readDataSource") DataSource readDataSource) {
return new LazyReplicationConnectionDataSourceProxy(writeDataSource, readDataSource);
}
@Primary
@Bean
public DataSource dataSource(@Qualifier("dataSourceSpied") DataSource datasource) {
return new Log4jdbcProxyDataSource(datasource);
}
}
잘된듯 잘된듯.. 하다. 무엇인가 새로운 벽에 도달 할 것으로 보여진다.
아.. Query 로그 보기 쉽게 하기 위해
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
</dependency>
DataSource 에 log4jdbc remix 설정
첫 셋팅이다 보니 이상한게 한두개가 아니네.
댓글 없음:
댓글 쓰기