怎么使用druid配置mysql多个节点
时间: 2024-02-01 14:04:27 浏览: 141
要使用Druid配置MySQL多个节点,需要进行以下步骤:
1. 在Druid配置文件中定义多个数据源,每个数据源对应一个MySQL节点。例如:
```
# 数据源1
spring.datasource.druid.ds1.url = jdbc:mysql://localhost:3306/db1
spring.datasource.druid.ds1.username = root
spring.datasource.druid.ds1.password = root
# 数据源2
spring.datasource.druid.ds2.url = jdbc:mysql://localhost:3307/db2
spring.datasource.druid.ds2.username = root
spring.datasource.druid.ds2.password = root
```
2. 定义一个数据源路由器,用于根据需要选择不同的数据源。例如:
```
@Configuration
public class DataSourceConfig {
@Bean
public DataSource dataSource() {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put("ds1", ds1());
targetDataSources.put("ds2", ds2());
RoutingDataSource routingDataSource = new RoutingDataSource();
routingDataSource.setDefaultTargetDataSource(ds1());
routingDataSource.setTargetDataSources(targetDataSources);
return routingDataSource;
}
@Bean
public DataSource ds1() {
DruidDataSource ds = new DruidDataSource();
ds.setUrl("jdbc:mysql://localhost:3306/db1");
ds.setUsername("root");
ds.setPassword("root");
return ds;
}
@Bean
public DataSource ds2() {
DruidDataSource ds = new DruidDataSource();
ds.setUrl("jdbc:mysql://localhost:3307/db2");
ds.setUsername("root");
ds.setPassword("root");
return ds;
}
}
```
3. 在业务代码中使用数据源路由器来获取数据源。例如:
```
@Autowired
private DataSource dataSource;
public void doSomething() {
// 获取数据源
DataSourceContextHolder.setCurrentDataSource("ds1");
Connection conn = dataSource.getConnection();
// 执行SQL
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM table1");
// 处理结果集
while (rs.next()) {
// ...
}
// 关闭连接
rs.close();
stmt.close();
conn.close();
}
```
其中,`DataSourceContextHolder.setCurrentDataSource("ds1")` 是一个自定义的工具类,用于设置当前线程要使用的数据源。可以根据具体情况进行修改。
注意,在使用多个数据源时,需要确保每个数据源的连接池配置都正确,否则可能会导致连接池不足或者连接超时等问题。
阅读全文