数据迁移探索

概念

数据迁移是指将数据从一个计算环境或存储系统移动到另一个计算环境或存储系统。

随着公司业务的发展,出于成本优化、系统升级、分库分表、整合数据等原因。数据迁移工作在日常工作中会陆续出现。

我们可以将数据迁移分成两个部分,第一部分是数据迁移,第二部分是写入数据切换

数据迁移

这一部分我们的目标是把旧数据库的数据同步到新的数据库,并且保证在线系统新产生的数据也会实时的同步到新数据库

这里我们会遇到两种方式的选择

第一种 二阶段迁移

数据会被切分成迁移开始之前和之后两份数据

迁移开始之前的数据我们通常会用批量selectinsert的方式同步到新数据库

迁移开始之后的数据,通过读取迁移开始之后binlog的方式同步到新数据库

当同步的数据量特别大的时候,我们需要注意一个问题binlog是会设置保存时长的。当数据量很大的时候,会存在当第一阶段耗时很长,当第二阶段开始时,binlog的数据已经开始出现失效的情况

第二种 实时迁移

在这种方式中数据也会分成迁移开始之前和之后两份数据

不过在迁移中两份数据不会分成先后导入到新数据库,会按照批次将两份数据按照先后进行合并,再导入到新数据库

虽然解决了第一种方式binlog失效的问题,但是由于加了合并的动作,写入的效率并没有第一种方式高

写入数据切换

当数据迁移完成后,我们将进入数据迁移的第二个部分

我们立即会想到的就是找个业务低峰期直接将写入服务从老数据切换到新数据库

即使是单节点的服务,在重启时也是会有可能存在新的数据开始写入新的数据库之后任然有老数据库同步过来的数据,这时自增id就会出现异常。

所以最安全的操作就是服务停机,等待新库确认已经同步了老库的所有数据记录,再重新开启服务,写入新库

由于业务复杂性、业务量的增加,停服对许多业务来说是尽量避免的,那我们就没有不停服写入数据的办法吗

双写

通常我们可以使用双写的方式来实现这个切换

但是这个方式对代码的入侵性和开发复杂度也是巨大的

代理方式

通过设计代理模式,接管新旧数据库的切换工作,在服务内集成了数据比对和切换的工作,保证在不停机的情况下,安全的进行迁移数据切换

总结

考虑到不同服务业务需求。我们觉得如果服务存在停机的可能性,停机迁移肯定是最最安全的方式。如果在不能停服的前提下,少量表的迁移,双写是不错的方式。如果不停服,并且全表迁移,代理方式是更合适的方式。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

借助钡铼经济型网关实现台达PLC设备与OPC UA的连接

随着工业自动化的发展,将传统的PLC设备接入现代化的网络通信系统变得越来越重要。OPC UA(Open Platform Communications Unified Architecture)作为工业领域通信的开放标准,提供了安全、可靠且跨平台的数据传输能力,因…

淘宝商品历史价格查询(免费)

当前资料来源于网络,禁止用于商用,仅限于学习。 淘宝联盟里面就可以看到历史价格 并且没有加密 淘宝商品历史价格查询可以通过以下步骤进行: 先下载后,登录app注册账户 打开淘宝网站或淘宝手机App。在搜索框中输入你想要查询的商…

人工智能算法工程师(中级)课程4-sklearn机器学习之回归问题与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程4-sklearn机器学习之回归问题与代码详解。回归分析是统计学和机器学习中的一种重要方法,用于研究因变量和自变量之间的关系。在机器学习中,回归算法被广泛应用于…

【基于R语言群体遗传学】-16-中性检验Tajima‘s D及连锁不平衡 linkage disequilibrium (LD)

Tajimas D Test 已经开发了几种中性检验,用于识别模型假设的潜在偏差。在这里,我们将说明一种有影响力的中性检验,即Tajimas D(Tajima 1989)。Tajimas D通过比较数据集中的两个𝜃 4N𝜇估计值来…

[Linux安全运维] Linux用户以及权限管理

Linux用户以及权限管理 Linux用户和组 用户信息文件pasawd /etc/passwd文件用于存储用户的信息 :用于分割不同的字段信息 字段示例(第一行)含义说明1root用户名2x密码占位符x代表用户有密码存储在shadow文件中无内容代表用户登录系统不需要密码30UID…

【C语言】指针(4):深入理解指针

目录 ​编辑 一、回调函数 二、qsort使用举例 2.1 使用qsort排序整型数据 2.2 使用qsort排序结构体数据 三、qsort的模拟实现 四、NULL、\0、0、0、null、NUL的区别 五、C99中的变长数组 一、回调函数 函数指针是将函数的地址取出来,再通过函数地址去调用&a…

Linux Web服务器

文章目录 一、web服务1.1 http1.2 Web1.3 web中间件 二、 Apache服务的搭建与配置2.1 服务安装基本思路三、 Nginx 配置Web服务 一、web服务 以赛促学的内容:因不清楚出题使用何种服务,特将两种服务归纳总结. HTTP是数据传输的规则,Web是基于HTTP协议的服务。当今…

​cesium、three.js,三维GIS为啥那么热?到底怎么学呢?

​cesium、three.js,三维GIS为啥那么热?他们的应用场景都是什么呢?接下来我们可以一起来看看~ 三维GIS的应用 GIS和3D的应用是趋势,目前已经有很多应用案例,例如BIM,智慧城市,数字孪生等。如下…

C语言入门-1.数据的类型、数据的输入输出

数据类型常量变量&#xff08;整型-浮点-字符&#xff09; 数据类型 基本类型 整型int 符号常量 定义一个整形变量时要使用关键字int #include <stdio.h> //符号常量练习 #define PI 3 2 int main() {int i PI * 2;printf("i%d\n",i);return 0; } //7 …

前端埋点数据收集和数据上报

原文地址 什么是埋点 学名叫时间追踪(Event Tracking), 主要针对用户行为或者业务过程进行捕获&#xff0c;处理和发送相关技术及实施过程. 埋点是数据领域的一个专业术语&#xff0c;也是互联网领域的俗称&#xff0c;是互联网领域的俗称 埋点是产品数据分析的基础&#xf…

[leetcode]minimum-cost-to-reach-destination-in-time 规定时间内到达终点的最小费用

. - 力扣&#xff08;LeetCode&#xff09; class Solution { private:// 极大值static constexpr int INFTY INT_MAX / 2;public:int minCost(int maxTime, vector<vector<int>>& edges, vector<int>& passingFees) {int n passingFees.size();ve…

闭眼投!IF逐年上涨,国人录用率超高,无预警风险,平均8周录用!

本周投稿推荐 SCI • 能源科学类&#xff0c;1.5-2.0&#xff08;25天来稿即录&#xff09; • CCF推荐&#xff0c;4.5-5.0&#xff08;2天见刊&#xff09; • 生物医学制药类&#xff08;2天逢投必中&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09…

企业应对策略:全面防御.DevicData-P-xxxxxx勒索病毒

引言 在数字化时代&#xff0c;网络安全已成为不可忽视的重要议题。随着互联网的普及&#xff0c;各种网络威胁层出不穷&#xff0c;其中勒索病毒以其独特的攻击方式和巨大的破坏性&#xff0c;给个人用户和企业带来了严重的经济损失和数据安全风险。在众多勒索病毒中&#xff…

抖音评论拓客提取截取软件功能介绍

抖音短视频评论截取软件功能介绍 一&#xff1a;功能列表 功能名称 功能描述 备注 关键词批量视频 用于通过关键词进行视频搜索&#xff0c;然后截取评论 不支持实时监控 博主视频提取 通过博主的分享链接&#xff0c;进行视频的评论提取 支持实时监控 单个视频提取 …

ECCV:A Discriminative Feature Learning Approach for Deep Face Recognition

1 Abstract 卷积神经网络&#xff08;CNNs&#xff09;已广泛应用于计算机视觉领域&#xff0c;显著提高了计算机视觉领域的技术水平。在大多数可用的cnn中&#xff0c;使用软tmax损失函数作为监督信号来训练深度模型。为了增强深度学习特征的识别能力&#xff0c;本文提出了一…

C++11中重要的新特性之 lambda表达式 Part two

序言 在上一篇文章中&#xff0c;我们主要介绍了 C11 中的新增的关键词&#xff0c;以及 范围for循环 这类语法糖的使用和背后的逻辑。在这篇文章中我们会继续介绍一个特别重要的新特性分别是 lambda表达式 。 1. lambda表达式 1.1 lambda的定义 C11 中的 lambda表达式 是一种…

bug - while parsing file included at

bug 如下 找到这个对应文件tb_top.sv的对应行&#xff0c;发现是一个 include "inc_tb_tests_xxx.sv" 问题点&#xff1a;头文件&#xff0c;重复定义&#xff0c;那么 解决方法- 在被include的文件首尾加入 ifndef MY_TRANSACTION__SV define MY_TRANSACTION__SV …

数据库管理 常用函数,处理查询,管理表记录

常用函数 MySQL服务内置命令 语法&#xff1a;函数名(表头名) 可以单独用&#xff0c;也可以镶嵌 select day(now()) select格式: SELECT 函数(表头名) FROM 库名.表名&#xff1b;SELECT 函数(表头名) FROM 库名.表名 WHERE 条件&#xff1b; departments 部门…

hf-mirror (huggingface 的国内镜像)

官网&#xff1a; https://hf-mirror.com/ 网站域名 hf-mirror.com&#xff0c;用于镜像 huggingface.co 域名。作为一个公益项目&#xff0c;致力于帮助国内AI开发者快速、稳定的下载模型、数据集。 如何使用HF-Mirror 方法一&#xff1a;网页下载 在https://hf-mirror.com/…

Linux下常见压缩文件tar.xz、tar.bz2、tar.gz的区别

文章目录 tar.xz tar.bz2 tar.gz 的区别三种文件的解压方式tar.xz的解压 tar.xz tar.bz2 tar.gz 的区别 这三个文件扩展名都表示压缩后的档案文件&#xff0c;但它们使用不同的压缩算法。 tar.xz: tar 代表 Tape Archive&#xff0c;它是一种将多个文件打包成一个文件的工具。…