不停机数据库迁移方案

news/2025/2/25 12:23:16

首先我们需要知道一个基本的数据迁移的方案:

  1. 创建一个目标表
  2. 使用源表的数据去初始化目标表
  3. 执行一次校验, 此时使用源表数据去修复目标表数据
  4. 双写, 业务开启双写, 读写源表, 写目标表
  5. 开启增量校验和数据修复, 保持一段时间
  6. 切换双写顺序, 此时读写目标表, 数据以目标表为准
  7. 继续保持增量校验

1. 首先创建一个目标表:

CREATE TABLE target_table LIKE source_table;  -- 复制表结构
ALTER TABLE target_table ADD COLUMN new_column VARCHAR(255);  -- 可选扩展

2. 数据迁移

将原来的表的数据给迁移过去, 这一步我们可以借助 mysqldump 这种工具, 直接把数据迁移过去, 下面一部就是执行一次校验。

mysqldump -h source_host db source_table | mysql -h target_host db target_table

3. 数据校验

第一次校验的方式主要有两种,

  • 第一种就是全量校验, 全量校验主要指的是, 详细的对比两个表的字段时候想等, 如果不相等那么我们就要判断它的不一致的位置, 然后进行修复
  • 第二种方式就是增量校验, 增量校验主要指的是按照 uptime 这个字段, 来修复, 主要指的是如果时间晚于导出数据的那个时间点, 那么我们就更新对应的数据

开启双写:

这个东西, 主要利用一些工具, 比如 gorm 的 conn pool 这种工具, 利用这种装饰器模式封装两个数据源, 每次执行语句的时候, 根据标记位来执行对应的双写逻辑。

if flag == "双写以源表为准" {
	// 执行相关操作
}

if flag == "双写以目标表为准" {
	// 执行写操作
}

双写校验+ 增量校验: 也就是一边进行双写, 然后一边进行增量校验, 主要还是根据对应的 uptime 来做这个件事情

双写+目标表+ 原表, 之所以这样干的目的就是可以当出错的时候, 我们可以立刻去回滚对应的数据


http://www.niftyadmin.cn/n/5865497.html

相关文章

AI安全相关漏洞

最近AI大模型上线,除开常规的系统漏洞外,也涌现出很多新的漏洞,这篇文章对于新的一些漏洞进行一些整理,后期进行进一步的复现。 1. 对抗攻击(Adversarial Attacks) 攻击机制: 通过在输入数据中添…

回溯算法之组合和排列问题

文章目录 1.什么是回溯算法2.回溯算法解题步骤3.回溯算法解决组合问题4.回溯算法解决排列问题 1.什么是回溯算法 回溯算法是一种通过尝试所有可能的解决方案来解决问题的算法策略,它通常用于求解组合优化、排列组合、路径搜索等类型的问题,是一种暴力求解的算法。 2…

Vue.js 学习笔记:TodoList 待办事项小案例

文章目录 前言一、项目概述二、代码解析1. HTML 结构亮点解析 2. Vue.js 实现功能解析 三、优化与改进1. 用户体验优化2. 代码优化 四、总结与展望 前言 今天浅学了一下vue,将所学知识点应用到这个非常经典的TodoList 待办事项小案例中。 一、项目概述 本次案例…

2025-spring boot 之多数据源管理

1、是使用Spring提供的AbstractRoutingDataSource抽象类 注入多个数据源。 创建 DataSourceConfig 配置类 通过spring jdbc 提供的带路由的抽象数据源 AbstractRoutingDataSource import org.springframework.beans.factory.annotation.Autowired; import org.springframew…

Python爬虫-破解字体加密技术

前言 本文是该专栏的第77篇,后面会持续分享python爬虫干货知识,记得关注。 字体加密是一种常见的反爬虫技术,通过自定义字体文件和字符映射来保护网页内容,防止爬虫直接获取文本信息。 而本文,笔者将针对“如何解决目标平台的字体加密技术,并获取目标数据”,进行详细介…

商业化运作的“日记”

晴,2025年2月24日 看到这张图: 将其放大: 建立表格: 原话翻译一些点市场中的万物现出本相,无非世人的需求有需求才有市场商品交换需求交换⇆孕育平台产品价值功能价值情绪价值资产价值解决实际问题 情感经济价值/增…

数据库设计的优化建议

数据库设计的优化建议 为了提升数据库的性能、可扩展性和维护性,以下是一些具体的优化建议,每个建议都包含了详细的实现方法和适用场景: 1. 索引优化 索引是提高数据库查询效率的关键因素。合理的索引设计可以显著减少查询时间和系统I/O操作…

数字IC后端培训教程| 芯片后端实战项目中base layer drc violation解析

今天分享一个咱们社区IC后端训练营学员遇到的一个经典DRC案例。这个DRC Violation的名字为PP.S.9(这里的PP就是Plus P)。这一层是属于管子的base layer。更多关于base layer的介绍,可以查看下面这份教程。 https://alidocs.dingtalk.com/api/doc/transit?spaceId5…