如何将HikariCP设置为MySQL的只读模式?

时间:2018-07-16 18:30:07

标签: mysql spring-boot hikaricp

我正在使用Spring Boot和HikariCP,并尝试将与MySQL数据库的连接设置为只读。但是所有尝试都失败了。我正在运行Spring Boot 2.0.5和HikariCP 3.2.0,以及MySQL连接器8.0.11。

我有2个数据源-1个用于写,另一个用于读。我试图在Spring Boot application.properties文件中设置属性,但是 catalina.out 日志中显示的配置显示readOnly设置为false。

我有一个配置类,该类使用application.properties文件中的属性来配置池,但是似乎无法将其从false更改为 readOnly 属性true。 我还尝试在setReadOnly(true);方法中放入dataSource()语句-不起作用。

@Configuration
@EnableTransactionManagement
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "reader.datasource")
@EnableJpaRepositories(
    entityManagerFactoryRef = "entityManagerFactory",
    basePackages = {"com.abc.data.reader.repo"})
public class ReaderDataSourceConfig extends HikariConfig {

@Bean(name = "readerDataSource")
public DataSource dataSource() {
    return new HikariDataSource(this);
}

@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
        EntityManagerFactoryBuilder builder,@Qualifier("readerDataSource") 
DataSource dataSource) {
    return builder.dataSource(dataSource).packages("com.abc.repo")
            .persistenceUnit("reader")
            .build();
}

@Bean(name = "transactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("entityManagerFactory") EntityManagerFactory entityManagerFactory) {
    return new JpaTransactionManager(entityManagerFactory);
    }
}

以及属性文件中的行:

#HikariCP Reader config
reader.datasource.jdbc-url=jdbc:mysql://...
reader.datasource.username=###
reader.datasource.password=#####
reader.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
reader.datasource.maximum-pool-size=10
reader.datasource.connection-timeout=60000
reader.datasource.max-lifetime=1800000
reader.datasource.minimum-idle=10
reader.datasource.validation-timeout=15000
reader.datasource.read-only=true         ***tried multiple variations***
reader.datasource.hikari.read-only=true      
reader.datasource.readOnly=true
reader.dataSource.cachePrepStmts=true
reader.dataSource.prepStmtCacheSize=250
reader.dataSource.prepStmtCacheSqlLimit=2048
reader.dataSource.useServerPrepStmts=true
reader.dataSource.useLocalSessionState=true
reader.dataSource.rewriteBatchedStatements=true
reader.dataSource.cacheResultSetMetadata=true
reader.dataSource.cacheServerConfiguration=true
reader.dataSource.elideSetAutoCommits=true
reader.dataSource.maintainTimeStats=false
reader.datasource.pool-name=ReaderPool

是否无法通过属性文件进行设置?

0 个答案:

没有答案
相关问题