Java 弹簧&x2B;Hibernate:读/写不同的数据源和数千个mysql数据库

Java 弹簧&x2B;Hibernate:读/写不同的数据源和数千个mysql数据库,java,mysql,spring,hibernate,database-replication,Java,Mysql,Spring,Hibernate,Database Replication,我需要使用单独的读写器MySQL服务器。一个写入程序和一个(或多个)读取副本 最好的方法是什么 我发现了很多例子: 使用特殊的JDBC驱动程序:com.mysql.JDBC.ReplicationDriver 用途如下: @Transactional(readOnly=true) @ReadOnlyConnection public Result serviceMethod(…) { … } 使用SpringAbstractRoutingDatasource: 用法: @Tra

我需要使用单独的读写器MySQL服务器。一个写入程序和一个(或多个)读取副本

最好的方法是什么

我发现了很多例子:


使用特殊的JDBC驱动程序:
com.mysql.JDBC.ReplicationDriver

用途如下:

@Transactional(readOnly=true)
@ReadOnlyConnection
public Result serviceMethod(…) {
   …
}

使用Spring
AbstractRoutingDatasource

用法:

@Transactional(readOnly = true)
public Page<BookDTO> getBooks(Pageable p) {
  try{
    DbContextHolder.setDbType(DbType.REPLICA1);   // <----- set ThreadLocal DataSource lookup key
我希望有一个“主mysql数据库”,表如下:

user   db_name
--------------
test1  db_test1
test2  db_test2

如果我需要一些数据供用户
test2
使用,我会查看“主数据库”并获取数据库
db_test2
使用的信息。然后将查询发送到数据库
db_test2

最好的方法是使用MySQL Connector/J复制感知驱动程序配置。您的连接字符串如下所示

jdbc:mysql:replication://[master host][:port],[slave host 1][:port][,[slave host 2][:port]]...[/[database]]
一旦将事务标记为只读,它将自动路由到只读从属


最好的方法是使用MySQL Connector/J复制感知驱动程序配置。您的连接字符串如下所示

jdbc:mysql:replication://[master host][:port],[slave host 1][:port][,[slave host 2][:port]]...[/[database]]
一旦将事务标记为只读,它将自动路由到只读从属


不错。我需要试试这个,很好。我需要试试这个。