Flyway支持多数据源

考虑分库分表的场景下,如何实现通过Flyway在多数据源时做数据库版本更新。

实现方案

  1. 首先,关闭Flyway自动配置

spring:flyway:#关闭flyway自动配置,自定义实现enabled: false
  1. 其次,配置数据库多数据源

datasource:# 主库数据源 master:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.16.155:3306/edu01?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8username: rootpassword: 123456# 从库数据源 slave:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.16.155:3306/edu02?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8 username: rootpassword: 123456
  1. 自定义实现Flyway配置类,遍历数据源进行数据库迁移

package com.ruoyi.system.config;import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import lombok.extern.slf4j.Slf4j;
import org.flywaydb.core.Flyway;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;
import java.util.Map;@Slf4j
@Configuration
@EnableTransactionManagement
public class FlywayConfig {@Autowiredprivate DataSource dataSource;@Beanpublic void migrate() {log.info("开始执行数据库迁移");DynamicRoutingDataSource ds = (DynamicRoutingDataSource) dataSource;Map<String, DataSource> dataSourceMap = ds.getDataSources();dataSourceMap.forEach((k, v) -> {Flyway flyway = Flyway.configure().dataSource(v).baselineOnMigrate(true).baselineVersion("0.1")  // 基线版本.baselineDescription(k + "初始化").locations("classpath:db/migration")  // sql脚本存放地址.load();flyway.migrate(); // 执行版本迁移log.info("{} 数据库迁移完成", k);});}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 列表视频滑动自动播放(实现思路)

1、列表&#xff08;RecyclerView&#xff09;中内容包含视频&#xff0c;列表在快速滑动时候&#xff0c;如果每个视频自动播放&#xff0c;会导致页面卡顿。我们优化思路&#xff0c;通过监听RecyclerView滑动状态&#xff0c;来实现当停止滑动时候&#xff0c;来播放视频 滑…

探索服务器硬件:理解基础组件及其重要性

在现代IT基础设施中&#xff0c;服务器扮演着至关重要的角色。无论是托管网站、管理数据、运行应用程序还是提供各种在线服务&#xff0c;服务器硬件的性能和稳定性都是确保这些任务顺利进行的关键。本文将介绍服务器硬件的基本组件及其功能&#xff0c;以帮助读者更好地理解和…

Keepalived LVS群集

一、Keepalived案例分析 企业应用中&#xff0c;单台服务器承担应用存在单点故障的危险 单点故障一旦发生&#xff0c;企业服务将发生中断&#xff0c;造成极大的危害 二、Keepalived工具介绍 专为LVS和HA设计的一款健康检查工具 支持故障自动切换&#xff08;Failover&#…

OceanMind海睿思成功签约南京市交通集团,助力集团数字化转型高效推进!

近日&#xff0c;中新赛克海睿思与南京市政府批准成立的市级国有全资公司——南京市交通建设投资控股&#xff08;集团&#xff09;有限责任公司&#xff08;以下简称“南京市交通集团”&#xff09;达成深度战略合作&#xff0c;为南京市交通集团提供数据中心及监管数据管理平…

2.4G低功耗无线收发SOC芯片-SI24R03

随着物联网产业对集成度的需求越来越高&#xff0c; 也在不断地完善公司产品生态。 “射频MCU”产品组合--无线SOC芯片&#xff08;MCU&#xff09;&#xff0c;简化了系统设计。只需要少量的外围器件&#xff0c;用户即可实现产品的开发&#xff0c;有效减少了PCB板的占用…

vue关闭页面时触发的函数(ai生成)

在Vue中&#xff0c;可以通过监听浏览器的beforeunload事件来在关闭页面前触发函数。这里是一个简单的示例&#xff1a; new Vue({el: #app,methods: {handleBeforeUnload(event) {// 设置returnValue属性以显示确认对话框event.returnValue 你确定要离开吗&#xff1f;;// 在…

什么是校园抄表系统?

1.校园抄表系统的简述 校园抄表系统是当代高校管理中的一个重要组成部分&#xff0c;主要运用于全自动搜集、管理方法与分析校园里的电力能源使用数据&#xff0c;如水电煤等。它通过先进的方式方法&#xff0c;完成了对能源消耗的实时监控系统&#xff0c;提升了电力能源管理…

(源码)一套医学影像PACS系统源码 医院系统源码 提供数据接收、图像处理、测量、保存、管理、远程医疗和系统参数设置等功能

PACS系统还提供了数据接收、图像处理、测量、保存、管理、远程医疗和系统参数设置等功能。 PACS系统提高了医学影像的利用率和诊疗效率&#xff0c;为医生提供了更加准确和及时的诊断依据。它是医院信息化的必备系统之一&#xff0c;已经成为医学影像管理和传输的重要工具。 P…

忆捷硬盘数据恢复方法有哪些?常见的有这四种

在数字化时代&#xff0c;硬盘作为存储大量数据的重要设备&#xff0c;其安全性与可靠性直接关系到我们的工作和生活。然而&#xff0c;无论是由于误操作、病毒感染还是硬件故障&#xff0c;硬盘数据丢失的情况时有发生。对于使用忆捷硬盘的用户来说&#xff0c;如何在数据丢失…

从零手写实现 nginx-22-modules 模块配置加载

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

DETR实现目标检测(二)-利用自己训练的模型进行预测

1、图片预测&#xff08;CPU&#xff09; 关于DETR模型训练自己的数据集参考上篇文章&#xff1a; DETR实现目标检测(一)-训练自己的数据集-CSDN博客 训练完成后的模型文件保存位置如下&#xff1a; 准备好要预测的图片&#xff1a; 然后直接调用模型进行预测&#xff0c;并设…

linux部署运维3——centos7.9离线安装部署配置涛思taos2.6时序数据库TDengine以及java项目链接问题处理(二)

上一篇讲了centos7.9如何安装涛思taos2.6时序数据库的操作步骤和方案&#xff0c;本篇主要讲解taos数据库的初始化&#xff0c;相关配置说明&#xff0c;数据库和表的创建问题以及java项目连接问题。 centos7.9如何离线安装taos2.6&#xff0c;请点击下方链接详细查看&#xf…

React的@reduxjs/toolkit的异步方法处理和实现

一、使用异步方法,需要 createAsyncThunk 函数 1.首先在特定的ts文件中建立异步 const fetchArticles=createAsyncThunk(searchArticle/fetchArticles,async({SearchKey,type},thunkAPI)=>{const params = {Filter: SearchKey,PageSize: 10,PageNum: 1,ArticleType: &quo…

YOLOv5改进 | Head | 将yolov5的检测头替换为ASFF_Detect

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 在目标检测中&#xff0c;为了解决尺度变化的问题&#xff0c;通常采用金字塔特征表示。然而&#xff0c;对于基于特征金字塔的单次检测器来…

Python中的pass语句

在Python编程语言中&#xff0c;pass是一个特殊的语句&#xff0c;它并不执行任何操作&#xff0c;仅仅用作占位符。当我们在编写代码时&#xff0c;有时需要定义一个空的代码块或函数&#xff0c;但又不想立即实现它&#xff0c;这时候pass语句就派上了用场。pass语句可以帮助…

h5页面上传图片安卓手机无法调用摄像头

<input type”file”> 在ios中&#xff0c;会 而安卓中&#xff0c;没有这些选项 解决方法&#xff1a; 给input 加上accept属性 <input type”file” accept”image/*” /> //调用相机 &#xff0c;图片或者相册 &#xff08;两者都行&#xff09; 加上了cap…

MYSQL 查看SQL执行计划

一、explain explain select id,db,user,host,command,time,state,info from information_schema.processlist order by time desc; id: 查询的标记&#xff0c;可以查看不同查询的执行顺序。 select_type: 查询的类型&#xff0c;如SIMPLE、SUBQUERY、PRIMARY等。 table: …

本地Zabbix开源监控系统安装内网穿透实现远程访问详细教程

文章目录 前言1. Linux 局域网访问Zabbix2. Linux 安装cpolar3. 配置Zabbix公网访问地址4. 公网远程访问Zabbix5. 固定Zabbix公网地址 &#x1f4a1;推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【…

web前端按值传递:深入剖析与探索

web前端按值传递&#xff1a;深入剖析与探索 在Web前端开发中&#xff0c;按值传递是一种重要的参数传递方式。然而&#xff0c;其背后的机制、影响以及在实际应用中的使用技巧&#xff0c;往往让开发者感到困惑。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;…

Ollama在windows上的设置

下载 Download Ollama on macOS 安装&#xff1a;是不可以选择安装路径&#xff0c;系统自动运行&#xff0c;不启动模型不占用GPU 参数设置&#xff1a;windows添加环境变量&#xff08;需要重启ollama&#xff09; 修改模型位置&#xff1a;添加 OLLAMA_MODELS D:\LLM\Oll…