2.1 配置

2017-11-09 23:04:30 4,566 0

DragonHADataSource提供了多种配置方式,下面逐一进行讲述。

1、通过java代码方式创建

public void createDragonHADatasource() throws Exception {
    
    //创建3个DruidDataSource,分别连接主库和从库
    DruidDataSource master = createDruidDataSource("write_username","write_password","jdbc:mysql://192.168.0.101:3306/dragon_ha") ;
    DruidDataSource slave1 = createDruidDataSource("read_username","read_password","jdbc:mysql://192.168.0.102:3306/dragon_ha") ;
    DruidDataSource slave2 = createDruidDataSource("read_username","read_password","jdbc:mysql://192.168.0.103:3306/dragon_ha") ;
    //创建DragonHADatasource,并将上面3个datasource交由DragonHADatasource管理
    DragonHADatasource dragonHADatasource = new DragonHADatasource();
    dragonHADatasource.addRealDatasource("master", 0, 10, master);
    dragonHADatasource.addRealDatasource("slave1", 10, 0, slave1);
    dragonHADatasource.addRealDatasource("slave2", 10, 0, slave2);
    
    //初始化
    dragonHADatasource.init();
}
//创建DruidDataSource
private DruidDataSource createDruidDataSource(String username, String password, String url) {
    DruidDataSource druidDataSource = new DruidDataSource();
    druidDataSource.setUsername(username);
    druidDataSource.setPassword(password);
    druidDataSource.setUrl(url);
    druidDataSource.setInitialSize(5);
    druidDataSource.setMinIdle(5);
    druidDataSource.setMaxActive(10);
    druidDataSource.setTestWhileIdle(true);
    druidDataSource.setTestOnBorrow(false);
    druidDataSource.setTestOnReturn(false);
    druidDataSource.setValidationQuery("select 'x'");
    druidDataSource.setValidationQueryTimeout(3);
    return druidDataSource;
}

2、通过properties文件创建

在classpath下新建配置文件dragon_ha.properties(properties配置文件名称随意)

#列出由DragonHADatasource管理的数据源列表
dragon.ha.datasources=master,slave1,slave2
#配置主库数据源master
dragon.ha.master.class=com.alibaba.druid.pool.DruidDataSource
dragon.ha.master.readWeight=0
dragon.ha.master.writeWeight=10
dragon.ha.master.property.url=jdbc:mysql://192.168.0.101:3306/dragon_ha
dragon.ha.master.property.username=write_username
dragon.ha.master.property.password=write_password
dragon.ha.master.property.initialSize=5
dragon.ha.master.property.minIdle=5
dragon.ha.master.property.maxActive=10
dragon.ha.master.property.testWhileIdle=true
dragon.ha.master.property.testOnBorrow=false
dragon.ha.master.property.testOnReturn=false
dragon.ha.master.property.validationQuery=select 'x'
#配置从库数据源slave1
dragon.ha.slave1.class=com.alibaba.druid.pool.DruidDataSource
dragon.ha.slave1.readWeight=10
dragon.ha.slave1.writeWeight=0
dragon.ha.slave1.property.url=jdbc:mysql://192.168.0.102:3306/dragon_ha
dragon.ha.slave1.property.username=read_username
dragon.ha.slave1.property.password=read_password
dragon.ha.slave1.property.initialSize=5
dragon.ha.slave1.property.minIdle=5
dragon.ha.slave1.property.maxActive=10
dragon.ha.slave1.property.testWhileIdle=true
dragon.ha.slave1.property.testOnBorrow=false
dragon.ha.slave1.property.testOnReturn=false
dragon.ha.slave1.property.validationQuery=select 'x'
#配置从库数据源slave2
dragon.ha.slave2.class=com.alibaba.druid.pool.DruidDataSource
dragon.ha.slave2.readWeight=10
dragon.ha.slave2.writeWeight=0
dragon.ha.slave2.property.url=jdbc:mysql://192.168.0.103:3306/dragon_ha
dragon.ha.slave2.property.username=read_username
dragon.ha.slave2.property.password=read_password
dragon.ha.slave2.property.initialSize=5
dragon.ha.slave2.property.minIdle=5
dragon.ha.slave2.property.maxActive=10
dragon.ha.slave2.property.testWhileIdle=true
dragon.ha.slave2.property.testOnBorrow=false
dragon.ha.slave2.property.testOnReturn=false
dragon.ha.slave2.property.validationQuery=select 'x'

创建DragonHADatasource

DragonHADatasource datasource=new DragonHADatasource();
datasource.setLocalConfigFile("dragon-ha.properties");
datasource.init();

3、与spring整合

配置文件可以服用上述的的dragon-ha.properties

<bean id="dragon-ha-datasource" class="com.tianshouzhi.dragon.ha.jdbc.datasource.DragonHADatasource" 
init-method="init" destroy-method="close">
       <property name="localConfigFile" value="dragon-ha.properties"></property>
</bean>

4、从远程配置中心拉取配置

待补充