spring-cloud集成数据库版本迁移工具flyway

article/2025/11/10 7:57:19

spring-cloud集成数据库版本迁移工具flyway

Flyway实现数据库版本同步有两种方式,一种就是直接导包,通过配置文件使用,还有一种就是自定义的方式。

一 、依赖+配置文件

1 flyway实现sql初始化

1.1 首先需要添加依赖

<!--mysql数据库版本管理控制器flyway-->
<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>5.2.4</version>
</dependency>

1.2 然后添加配置文件

spring:flyway:# 是否启用flywayenabled: true# 编码格式,默认UTF-8encoding: UTF-8# 迁移sql脚本文件存放路径,默认db/migrationlocations: classpath:db/migration# 迁移sql脚本文件名称的前缀,默认Vsql-migration-prefix: V# 迁移sql脚本文件名称的分隔符,默认2个下划线__sql-migration-separator: __# 迁移sql脚本文件名称的后缀sql-migration-suffixes: .sql# 迁移时是否进行校验,默认truevalidate-on-migrate: true# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表baseline-on-migrate: true

1.3 测试表sql

CREATE TABLE `test`  (`id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id',`test_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '测试id',`test_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '测试名',`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',`create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建者',`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',`update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者',`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

1.4 在迁移sql脚本文件存放路径,默认db/migration目录下添加sql脚本文件

格式:V20220922.14.51__Test_Init.sql (我这里用的是微服务作为示例,所以格式为 时间戳+模块名+用途名)注意:以时间戳来命名有一个问题就是:V20220922.04.51__Test_Init.sql 可能会被认为 比 V20220922.14.51__Test_Init.sql 版本更(四声)新,时间上明明是04更早其实不然,‘.’前面的‘0’可能会被省略然后去做比较。

1.5 运行微服务控制台输出

控制台打印出如下信息即表示test库初始化执行成功了

14:46:03.192 [main] INFO  o.f.c.i.l.VersionPrinter - [info,49] - Flyway Community Edition 5.2.4 by Boxfuse
14:46:03.205 [main] INFO  o.f.c.i.d.DatabaseFactory - [info,49] - Database: jdbc:mysql://localhost:3306/ry_cloud (MySQL 8.0)
14:46:03.397 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Current version of schema `ry_cloud`: << Empty Schema >>
14:46:03.404 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Migrating schema `ry_cloud` to version 20220922.14.51 - Test Init
14:46:03.454 [main] WARN  o.f.c.i.s.DefaultSqlScriptExecutor - [warn,53] - DB: Integer display width is deprecated and will be removed in a future release. (SQL State: HY000 - Error Code: 1681)
14:46:03.484 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Successfully applied 1 migration to schema `ry_cloud` (execution time 00:00.152s)

1.6 查看数据库表flyway_schema_history是否有迁移数据,是否生成test表

在这里插入图片描述
在这里插入图片描述

2 flyway实现sql迭代

2.1 首先还是添加依赖

<!--mysql数据库版本管理控制器flyway-->
<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>5.2.4</version>
</dependency>

2.2 然后还是添加配置文件

spring:flyway:# 是否启用flywayenabled: true# 编码格式,默认UTF-8encoding: UTF-8# 迁移sql脚本文件存放路径,默认db/migrationlocations: classpath:db/migration# 迁移sql脚本文件名称的前缀,默认Vsql-migration-prefix: V# 迁移sql脚本文件名称的分隔符,默认2个下划线__sql-migration-separator: __# 迁移sql脚本文件名称的后缀sql-migration-suffixes: .sql# 迁移时是否进行校验,默认truevalidate-on-migrate: true# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表baseline-on-migrate: true

2.3 在迁移sql脚本文件存放路径,默认db/migration目录下添加sql脚本文件

2.3.1测试添加:

格式:V20220926.14.57__Test_Add.sql(我这里用的是微服务作为示例,所以格式为 时间戳+模块名+用途名)

ALTER TABLE `test` ADD COLUMN `test_add01` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'flyway测试添加字段' AFTER `remark`;
15:07:02.002 [main] INFO  o.f.c.i.l.VersionPrinter - [info,49] - Flyway Community Edition 5.2.4 by Boxfuse
15:07:02.016 [main] INFO  o.f.c.i.d.DatabaseFactory - [info,49] - Database: jdbc:mysql://localhost:3306/ry_cloud (MySQL 8.0)
15:07:02.219 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Current version of schema `ry_cloud`: 20220922.14.51
15:07:02.225 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Migrating schema `ry_cloud` to version 20220926.14.57 - Test Add
15:07:02.280 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Successfully applied 1 migration to schema `ry_cloud` (execution time 00:00.135s)
2.3.2测试修改:
ALTER TABLE `test` CHANGE `test_add01` `test_update01` varchar(50);
15:12:55.668 [main] INFO  o.f.c.i.l.VersionPrinter - [info,49] - Flyway Community Edition 5.2.4 by Boxfuse
15:12:55.682 [main] INFO  o.f.c.i.d.DatabaseFactory - [info,49] - Database: jdbc:mysql://localhost:3306/ry_cloud (MySQL 8.0)
15:12:55.882 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Current version of schema `ry_cloud`: 20220926.14.57
15:12:55.887 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Migrating schema `ry_cloud` to version 20220926.15.08 - Test Update
15:12:55.940 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Successfully applied 1 migration to schema `ry_cloud` (execution time 00:00.131s)
2.3.3测试删除:
ALTER TABLE `test` DROP COLUMN `test_update01`;
15:17:17.842 [main] INFO  o.f.c.i.l.VersionPrinter - [info,49] - Flyway Community Edition 5.2.4 by Boxfuse
15:17:17.856 [main] INFO  o.f.c.i.d.DatabaseFactory - [info,49] - Database: jdbc:mysql://localhost:3306/ry_cloud (MySQL 8.0)
15:17:18.075 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Current version of schema `ry_cloud`: 20220926.15.08
15:17:18.081 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Migrating schema `ry_cloud` to version 20220926.15.16 - Test Delete
15:17:18.132 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Successfully applied 1 migration to schema `ry_cloud` (execution time 00:00.137s)

注意:如果没有执行过的sql脚本有严格的执行顺序要求,如果执行过了最新版本的再去执行低版本的会直接 跳过 或者 报错 (关闭校验时跳过,没关闭时校验报错)

未执行过的低版本sql
V20220926.15.15__Test_Error.sql
15:24:19.082 [main] INFO  o.f.c.i.l.VersionPrinter - [info,49] - Flyway Community Edition 5.2.4 by Boxfuse
15:24:19.097 [main] INFO  o.f.c.i.d.DatabaseFactory - [info,49] - Database: jdbc:mysql://localhost:3306/ry_cloud (MySQL 8.0)
15:24:19.342 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Current version of schema `ry_cloud`: 20220926.15.16
15:24:19.343 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Schema `ry_cloud` is up to date. No migration necessary.
15:40:42.354 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - [refresh,591] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.yxtp.common.flyway.FlywayConfig': Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Validate failed: Detected resolved migration not applied to database: 20220926.15.15

还有其他的很多错误情况:

​ 例如在默认配置下,删除了sql脚本或者更改了,和数据库表flyway_schema_history checksum(校验和)这个字段对应不上就会报错

15:36:03.728 [main] INFO  o.f.c.i.l.VersionPrinter - [info,49] - Flyway Community Edition 5.2.4 by Boxfuse
15:36:03.740 [main] INFO  o.f.c.i.d.DatabaseFactory - [info,49] - Database: jdbc:mysql://localhost:3306/ry_cloud (MySQL 8.0)
15:36:03.954 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - [refresh,591] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.yxtp.common.flyway.FlywayConfig': Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Validate failed: Migration checksum mismatch for migration version 20220926.14.57
-> Applied to database : -106777664
-> Resolved locally    : 2114797040
# 迁移时是否进行校验,默认true
validate-on-migrate: false#设置为false可以关闭校验也就是不对checksum(校验和)这个字段进行校验了(具体的原理可以自己研究一下)

在这里插入图片描述

二 、依赖+代码自定义配置

2.1 首先需要添加依赖

<!--mysql数据库版本管理控制器flyway-->
<dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId><version>5.2.4</version>
</dependency>

2.2 然后修改配置文件

关闭flyway开关,不然默认还是会启动

spring:flyway:# 是否启用flywayenabled: false# 编码格式,默认UTF-8encoding: UTF-8# 迁移sql脚本文件存放路径,默认db/migrationlocations: classpath:db/migration# 迁移sql脚本文件名称的前缀,默认Vsql-migration-prefix: V# 迁移sql脚本文件名称的分隔符,默认2个下划线__sql-migration-separator: __# 迁移sql脚本文件名称的后缀sql-migration-suffixes: .sql# 迁移时是否进行校验,默认truevalidate-on-migrate: true# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表baseline-on-migrate: true

2.3 添加自定义flyway配置类

package com.yxtp.common.flyway;import org.flywaydb.core.Flyway;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;import javax.annotation.PostConstruct;
import javax.sql.DataSource;/*** 【 flyway配置 自动生成flyway_schema_history表 】** @Date 2022/9/22* @Author xin yi*/
@Configuration
//@Order(Integer.MIN_VALUE)/*这个注解百来的解决奇怪的问题遇到可以放开*/
public class FlywayConfig {@Autowiredprivate DataSource dataSource;@PostConstructpublic void migrate() {Flyway flyway = Flyway.configure()/*可以在这里跟配置文件一样添加配置*/.baselineOnMigrate(true).ignoreIgnoredMigrations(false).validateOnMigrate(true).dataSource(dataSource).load();flyway.migrate();}
}

2.4 引用flyway公共模块

其余模块引用该模块就不用每个地方都配置一次了

<!--mysql数据库版本管理控制器flyway-->
<dependency><groupId>com.ruoyi</groupId><artifactId>yxtp-common-flyway</artifactId><version>3.6.0</version>
</dependency>

微服务记得install

2.5 flyway实现

所以问题就来了,那么操作都一样的,为什么还要自定义这么麻烦呢,大部分的情况没有问题是因为都是没有比flyway更早的需要对数据库进行操作,假如定时任务类的方法,需要提前对数据库进行操作的,flyway初始化的时候是不是就不行了,因为还没有初始化就要操作数据库表,显然是不行的,所以自定义就给了我们发挥的空间。

2.6 控制bean执行顺序

控制执行顺序 Flyway -> Scheduler
注解:@DependsOn({“FlywayConfig”})

同理适用于其它需要控制bean执行顺序的情况

package com.ruoyi.job.config;import java.util.Properties;
import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;/*** 定时任务配置(单机部署建议删除此类和qrtz数据库表,默认走内存会最高效)* * @author ruoyi*/
@DependsOn({"FlywayConfig"})
@Configuration
public class ScheduleConfig
{@Beanpublic SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource){SchedulerFactoryBean factory = new SchedulerFactoryBean();factory.setDataSource(dataSource);// quartz参数Properties prop = new Properties();prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler");prop.put("org.quartz.scheduler.instanceId", "AUTO");// 线程池配置prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");prop.put("org.quartz.threadPool.threadCount", "20");prop.put("org.quartz.threadPool.threadPriority", "5");// JobStore配置prop.put("org.quartz.jobStore.class", "org.springframework.scheduling.quartz.LocalDataSourceJobStore");// 集群配置prop.put("org.quartz.jobStore.isClustered", "true");prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");// sqlserver 启用// prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");prop.put("org.quartz.jobStore.misfireThreshold", "12000");prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");factory.setQuartzProperties(prop);factory.setSchedulerName("RuoyiScheduler");// 延时启动factory.setStartupDelay(1);factory.setApplicationContextSchedulerContextKey("applicationContextKey");// 可选,QuartzScheduler// 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了factory.setOverwriteExistingJobs(true);// 设置自动启动,默认为truefactory.setAutoStartup(true);return factory;}
}
16:15:55.780 [main] INFO  o.f.c.i.l.VersionPrinter - [info,49] - Flyway Community Edition 5.2.4 by Boxfuse
16:15:55.794 [main] INFO  c.z.h.HikariDataSource - [getConnection,110] - HikariPool-1 - Starting...
16:15:57.940 [main] INFO  c.z.h.HikariDataSource - [getConnection,123] - HikariPool-1 - Start completed.
16:15:57.952 [main] INFO  o.f.c.i.d.DatabaseFactory - [info,49] - Database: jdbc:mysql://localhost:3306/ry_cloud (MySQL 8.0)
16:15:58.156 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Current version of schema `ry_cloud`: 20220926.15.16
16:15:58.162 [main] INFO  o.f.c.i.c.DbMigrate - [info,49] - Migrating schema `ry_cloud` to version 20220926.16.15 - Job Init
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.NOT STARTED.Currently in standby mode.Number of jobs executed: 0Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 20 threads.Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is clustered.
926.16.15 - Job Init
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.NOT STARTED.Currently in standby mode.Number of jobs executed: 0Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 20 threads.Using job-store 'org.springframework.scheduling.quartz.LocalDataSourceJobStore' - which supports persistence. and is clustered.

http://chatgpt.dhexx.cn/article/XinORxIW.shtml

相关文章

Flyway 数据库版本控制

背景 在我们日常产品发布的过程中&#xff0c;代码的版本控制可以使用git、svn工具实现。对于数据库每当发布时会出现手动执行sql脚本进行升级数据库&#xff0c;中间经常出现一些漏写、错写情况&#xff0c;对数据库的版本与代码的版本不匹配&#xff0c;导致上线后出现数据库…

FlyWay入门教程

文章目录 Flyway1. 概述2. 工作原理与基本概念工作原理概述基本概念**[Migration(迁移)](https://flywaydb.org/documentation/concepts/migrations#naming)** 3. 安装和基本使用命令行安装使用命令 Java APISpring Boot Flyway Flyway by Redgate • 数据库迁移变得简单。 ---…

flyway的学习

Flyway 是一款开源的数据库版本管理工具。管理数据库变更的版本。 flyway工作流程如下&#xff1a; 项目启动&#xff0c;应用程序完成数据库连接池的建立后&#xff0c;Flyway自动运行。初次使用时&#xff0c;flyway会创建一个flyway_schema_history 表&#xff0c;用于记录…

Flyway的简单介绍及使用

Flyway的简单介绍及使用 一、开发时管理数据库遇到的问题&#xff1a; 现在开发一般都是团队开发&#xff0c;这样就会出现项目同步的问题&#xff0c;代码同步可以通过SVN工具管理起来&#xff0c;那数据库同步怎么办呢&#xff1f;理想的情况下&#xff0c;在开发新项目的时…

Flyway使用入门

Flyway简介 Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用&#xff0c;或者在Java应用程序中引入&#xff0c;用于管理我们的数据库版本。 在项目或产品中&#xff0c;很难一开始就把业务理清楚&#xff0c;把数据库表设计好&#xff0c;因此数据表也…

SpringBoot集成Flyway

1. 背景 Flyway是一个款数据库版本管理工具,通过集成Flyway可以实现启动项目时自动执行项目迭代升级所需Sql语句,从而减少升级项目时人工干预成本. 2. 集成Flyway pom文件引入依赖 <dependency><groupId>org.flywaydb</groupId><artifactId>flyway…

Flyway介绍和使用

一 使用背景 在我们日常产品发布的过程中&#xff0c;代码的版本控制可以使用git、svn工具实现。对于数据库每当发布时会出现手动执行sql脚本进行升级数据库&#xff0c;中间经常出现一些漏写、错写情况&#xff0c;对数据库的版本与代码的版本不匹配&#xff0c;导致上线后出…

Flyway简介

Flyway简介 总结&#xff1a;Flyway可以很方便的帮我们完成数据库部署和增量升级&#xff0c;很有用&#xff0c;但是版本回滚操作并不给力&#xff5e;&#xff5e;&#xff5e; 1、简介 1.1、Flyway是什么 Flyway是一款数据库迁移&#xff08;migration&#xff09;工具。简…

数据库版本管理工具 Flyway 使用

目录 一、简介 二、核心概念 1、Schema History Table 2、Migration 3、Versioned migrations 三、集成 SpringBoot 1、pom文件中引入依赖 2、application.yml配置 3、sql 脚本编写 四、初始化数据库 五、注意事项 一、简介 Flyway是一款开源的数据库版本管理工具&am…

Flyway简介及使用

Flyway简介及使用 1、简介 1.1 Flyway是什么&#xff1f; Flyway是一款开源的数据库版本管理工具&#xff0c;它更倾向于规约优于配置的方式。 Flyway可以独立于应用实现管理并跟踪数据库变更&#xff0c;支持数据库版本自动升级&#xff0c;并且有一套默认的规约&#xff0…

Flyway基础简介

1. 概述 Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。 自动升级&#xff08;自动发现更新项&#xff09;&#xff1a;Flyway 会将任意版本的数据库升级到最新版本。Flyway 可以脱离JVM 环境通过命令行执行&#xff0c;可以通过Ant 脚本执行&#…

flyway的学习总结

一、简单介绍 Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用&#xff0c;或者在Java应用程序中引入&#xff0c;用于管理我们的数据库版本。 在项目或产品中&#xff0c;很难一开始就把业务理清楚&#xff0c;把数据库表设计好&#xff0c;因此数据表…

Flyway——配置和使用(入门)

文章目录 介绍测试环境依赖引入配置数据库连接启动类设置脚本项目结构概览项目启动&#xff0c;观察日志和数据库结果测试R开头的脚本直接重启项目修改 R__add_user_info.sql 后重启 变更数据库字段验证 V 只能执行一次的问题验证 R 可执行多次验证只有一个_会报错技能扩充参考…

flyway的快速入门教程

目录 一、简单介绍 二、为什么要使用flyway 三、flyway是如何工作的 四、如何使用flyway 1、先要初始化一个SpringBoot项目&#xff0c;引入依赖 2、在application.yml中添加相关配置 3、根据配置文件中填写的脚本存放路径&#xff0c;创建文件夹 4、添加需要运行的sql…

Flyway详解(使用说明及避坑指南、一文搞懂flyway)

一、简介 1.1 Flyway是什么&#xff1f; Flyway是一款开源的数据库版本管理工具&#xff0c;可以实现管理并跟踪数据库变更&#xff0c;支持数据库版本自动升级&#xff0c;而且不需要复杂的配置&#xff0c;能够帮助团队更加方便、合理的管理数据库变更。 例&#xff1a;创建…

MySQL数据库的集群解决方案(一)

读写分库架构 我们一般应用对数据库而言都是“读多写少”&#xff0c;也就说对数据库读取数据的压力比较大&#xff0c;有一个思路就是说采用数据库集群的方案&#xff1a; 其中一个是主库&#xff0c;负责写入数据&#xff0c;我们称之为&#xff1a;写库&#xff1b; 其它都是…

MySQL数据库集群实战(1)——MySQL数据库基础知识

文章目录 一、为什么使用数据库&#xff1f;二、数据库概念数据库&#xff08;DataBase&#xff0c;DB&#xff09;数据库管理系统&#xff08;DataBase Management System&#xff0c;DBMS&#xff09;SQL概述 三、数据库存储文件的特点四、MySQL常见的数据对象五、MySQL数据类…

mysql-集群概述

mysql-主从模式 mysql-集群概述 可用性设计 站点高可用&#xff0c;冗余站点服务高可用&#xff0c;冗余服务 数据高可用&#xff0c;冗余数据 保证高可用的方法是冗余。但是数据冗余带来的问题是数据一致性问题 实现高可用的方案有以下几种架构模式&#xff1a; 主从模式 简…

MySQL数据库集群的原理与搭建

【1.应用背景】 在最近做的项目中&#xff0c;因为有一个短时间内很多人访问服务&#xff0c;会频繁访问数据库&#xff0c;看到这里不免有些人会想起数据库集群。我们组长也想到了用数据库集群&#xff0c;于是就带着我们几个研究起来了mysql数据库集群的搭建。因为我们几个的…

MySQL 数据库主从集群搭建

文章目录 1 准备工作2 配置主数据库3 配置从库4 从库设置只读用户5 推荐参考资料 1 准备工作 1 选择一个服务器当做主服务器&#xff0c;将服务器上需要的数据进行备份 2 安装从库的 MySQL&#xff0c;需要与主服务器的版本保持一致 3 将主服务器上的数据同步到从库中(主从集…