当前位置: 首页 > 知识库问答 >
问题:

Spring HiberNate:读取/写入不同的数据源和数千个mysql数据库

齐坚成
2023-03-14

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

最好的方法是什么?

我发现了很多例子:

http://www.dragishak.com/?p=307

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

用法是:

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

https://stackoverflow.com/a/33169879/1974494

使用Spring < code > AbstractRoutingDatasource :

用法:

@Transactional(readOnly = true)
public Page<BookDTO> getBooks(Pageable p) {
  try{
    DbContextHolder.setDbType(DbType.REPLICA1);   // <----- set ThreadLocal DataSource lookup key

在每个方法中,我都需要设置DbType。

是否可以自动将“读取查询”发送到副本服务器,并将“写入查询”(插入/更新)发送到主服务器?

第二个问题:

我想每个用户有一个mysql数据库(非常大)。我预计大约有2 000名用户。所以我不能为每个用户定义数据源。

示例:

spring.ds_items.driverClassName=com.mysql.jdbc.Driver
spring.ds_items.url=jdbc:mysql://mysql-master/user1
spring.ds_items.username=root 
spring.ds_items.password=12345

spring.ds_items.driverClassName=com.mysql.jdbc.Driver
spring.ds_items.url=jdbc:mysql://mysql-replica1/user1
spring.ds_items.username=root 
spring.ds_items.password=12345

spring.ds_items.driverClassName=com.mysql.jdbc.Driver
spring.ds_items.url=jdbc:mysql://mysql-master/user2
spring.ds_items.username=root 
spring.ds_items.password=12345

spring.ds_items.driverClassName=com.mysql.jdbc.Driver
spring.ds_items.url=jdbc:mysql://mysql-replica1/user2
spring.ds_items.username=root 
spring.ds_items.password=12345

我想有一个“主mysql数据库”与表类似:

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

如果我需要用户test2的一些数据,我查看“主数据库”并获得数据库db_test2使用的信息。之后向数据库db_test2发送查询。

共有1个答案

松飞翮
2023-03-14

最好的方法是使用MySQL Connector/J复制感知驱动程序配置

jdbc:mysql:replication://[master host][:port],[slave host 1][:port][,[slave host 2][:port]]...[/[database]]

一旦将事务标记为只读,它将被自动路由到只读从属事务

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-master-slave-replication-connection.html

 类似资料:
  • 本文向大家介绍Python爬取数据并写入MySQL数据库的实例,包括了Python爬取数据并写入MySQL数据库的实例的使用技巧和注意事项,需要的朋友参考一下 首先我们来爬取 http://html-color-codes.info/color-names/ 的一些数据。 按 F12 或 ctrl+u 审查元素,结果如下: 结构很清晰简单,我们就是要爬 tr 标签里面的 style 和 tr 下几

  • 主要内容:从 MySQL 数据库读取数据,使用 MySQLi,实例 (MySQLi - 面向对象),实例 (MySQLi - 面向过程),使用 PDO (+ 预处理),实例 (PDO)从 MySQL 数据库读取数据 SELECT 语句用于从数据表中读取数据: 我们可以使用 * 号来读取所有数据表中的字段: 如需学习更多关于 SQL 的知识,请访问我们的 SQL 教程。 使用 MySQLi 以下实例中我们从 myDB 数据库的 MyGuests 表读取了 id, firstname 和 lastn

  • 问题内容: 我想使用Spring和Hibernate写入一个MySQL主数据库,并从基于云的Java Web应用程序中再读取一个复制的从数据库。 我找不到对应用程序代码透明的解决方案。我真的不需要更改我的DAO来管理不同的SessionFactories,因为这看起来确实很麻烦,并将代码与特定的服务器体系结构结合在一起。 有什么办法告诉Hibernate自动将CREATE / UPDATE查询路由

  • 本文向大家介绍php操作XML、读取数据和写入数据的实现代码,包括了php操作XML、读取数据和写入数据的实现代码的使用技巧和注意事项,需要的朋友参考一下 xml文件 php解析XML获取标签中的值 php向XML文件中写入数据

  • 本文向大家介绍R使用NA值读取和写入数据,包括了R使用NA值读取和写入数据的使用技巧和注意事项,需要的朋友参考一下 示例 使用read.*函数读取表格数据集时,R自动查找看起来像的缺失值"NA"。但是,缺失值并不总是由表示NA。有时,点(.),连字符(-)或字符值(例如:)empty表示值是NA。该函数的na.strings参数read.*可用于告诉R需要将哪些符号/字符视为NA值: 还可能表明需

  • 本文向大家介绍Python如何读取MySQL数据库表数据,包括了Python如何读取MySQL数据库表数据的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python读取MySQL数据库表数据的具体代码,供大家参考,具体内容如下 环境:Python 3.6 ,Window 64bit 目的:从MySQL数据库读取目标表数据,并处理 代码: 结果如图: 以上就是本文的全部内容,希望对大