有没有办法在 Quartz Scheduler 中拆分读/写查询以使用 mysql 主从复制?
Posted
技术标签:
【中文标题】有没有办法在 Quartz Scheduler 中拆分读/写查询以使用 mysql 主从复制?【英文标题】:Is there a way to split read/write queries in Quartz Scheduler to use mysql master slave replication? 【发布时间】:2015-10-21 13:49:24 【问题描述】:我在我的应用程序中使用 Quartz 调度程序,并且我还在为我的其他数据库查询使用主从复制。我也想为 Quartz 调度程序使用主从复制,因此我想知道是否有一种方法可以更改石英分别对主/从进行的写入/读取查询?
我尝试更改“quartz.properties”,但所有调用都只发送到主节点
org.quartz.dataSource.quartzDS.driver=com.mysql.jdbc.ReplicationDriver
org.quartz.dataSource.quartzDS.URL=jdbc:mysql:replication://localhost:3306,localhost:3307/quartz?useUnicode=true&characterEncoding=utf8&useTimezone=true&serverTimezone=UTC&useLegacyDatetimeCode=false
org.quartz.dataSource.quartzDS.user=root
org.quartz.dataSource.quartzDS.password=root
org.quartz.dataSource.quartzDS.maxConnections=10
org.quartz.dataSource.quartzDS.validationQuery=select 1
【问题讨论】:
【参考方案1】:您可以在quartz.properties 中定义多个数据源。
quartzDS
是一个特定的数据源。您可以通过使用您想要的名称(如org.quartz.dataSource.quartzDSTheSecond
)标记属性来添加更多具有不同名称的属性。
见:http://www.quartz-scheduler.org/documentation/quartz-1.x/configuration/ConfigDataSources
然后您可以使用DBConnectionManager.getInstance().getConnection("quartzDSTheSecond")
获得connection;
【讨论】:
这是一种创建多个数据源的方法,但石英如何拆分读/写数据库查询。我正在使用石英的 api 来安排作业,这意味着我无法控制在复制中哪个调用转到 master 以及哪个调用转到 slave。我在这里错过了什么吗? 我误解了您的问题,并认为您在执行工作时指的是连接。抱歉,但我不知道如何告诉quartz 在管理其jobstore 时使用不同的来源。也许您想看看 JobStoreCMT (quartz-scheduler.org/documentation/quartz-1.x/configuration/…),它可能提供您需要的功能,但我对此表示怀疑。以上是关于有没有办法在 Quartz Scheduler 中拆分读/写查询以使用 mysql 主从复制?的主要内容,如果未能解决你的问题,请参考以下文章
Java + Spring + Quartz-scheduler:在其他工作结束后解雇一个工作