四、Sharding-JDBC系列04:分库分表后,如何不停机迁移数据?

目录

停机迁移方案

双写迁移方案


一般会有两种方案:

停机迁移方案

这种方案最简单也是最low的。

数据迁移前,在网站或者app挂个公告,说0点到早上6点系统进行维护,无法访问。

接着到0点停机,系统停掉,就没有流量写入了,此时老的单库单表就不会有新数据写入了。然后你用提前写好迁移数据的工具,将单库单表的数据哗哗哗读出来,写到分库分表里面去。

迁移完了之后,修改系统的数据库连接配置啥的,包括可能代码和SQL也许有修改,那你就用最新的代码,然后直接启动连到新的分库分表上去。

这些工作做完之后,验证一下系统,如果没什么问题, 整个迁移工作就结束了。

停机迁移数据,其主要缺点是必须停机几个小时,而且如果一旦迁移没成功,必须切回原来的单库单表方案,下次还得发公告再次停机迁移数据。

有的项目一旦上线就不能停止运行,那么上面的方案就无法实行了。而且现在比较主流的迁移方案是不停机双写迁移方案。所以下面我们介绍下双写迁移方案,在不停机的情况完成系统的无缝切换。

双写迁移方案

简单来说,就是在线上系统里面,之前所有对数据库增删改的操作,除了对老库增删改,都加上对新库的增删改,这就是所谓的双写。

然后新系统部署上线后,用数据迁移工具,读老库数据写到新库。如果读出来的数据在新库里没有,或者这条数据的update_time最后修改的时间,比新库的数据新才会写。简单来说,就是不允许用老数据覆盖新数据。

导完一轮之后,有可能数据还是存在不一致,那么就程序自动做一轮校验,对比新老库每个表的每条数据,如果有不一样的,就针对那些不一样的,从老库读数据再次写。

这样反复的跑了几天之后,旧数据库和新的数据库肯定是会一模一样的,最后观察下数据正常了,就可以停掉旧库的写入动作了。

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

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

相关文章

如何检查Post body并作出响应?

如果需要针对POST body中包含的参数对传入的请求作出响应,你打算怎么做?其实在使用Akamai EdgeWorkers的情况下,只需要一些高级MD(MetaData)技巧,这一切实现起来可以变得非常简单。 Akamai EdgeWorkers是什…

东北编程语言???

在GitHub闲逛,偶然发现了东北编程语言: 东北编程语言是由Zhanyong Wan创造的,它使用东北方言词汇作为基本关键字。这种编程语言的特点是简单易懂,适合小学文化程度的人学习,并且易于阅读、编写和记忆。它的语法与其他编…

IO网络2.0

思维导图 机械臂 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <myhead.h> #define SER_PORT 8888 #define SER_IP "192.168.122.68" //服务端//TCP客户端 int main(int argc, const char *argv[]) {//创建套接字…

在 Nvidia Docker 容器编译构建显存优化加速组件 xFormers

本篇文章&#xff0c;聊聊如何在新版本 PyTorch 和 CUDA 容器环境中完成 xFormers 的编译构建。 让你的模型应用能够跑的更快。 写在前面 xFormers 是 FaceBook Research &#xff08;Meta&#xff09;开源的使用率非常高的 Transformers 加速选型&#xff0c;当我们使用大模…

十大必备功能:打造高效知识库的关键因素

一个好的产品知识库应该成为客户了解产品功能、解决故障和满足产品相关查询的重要资源。但如果没有合理地维护和更新&#xff0c;其可能就失去了存在的价值。 知识库的有效性取决于其包含的信息是否全面、准确和实用。而要实现这一点&#xff0c;需要关注一些关键功能。 以人…

Docker安全基线检查需要修复的一些问题

一、可能出现的漏洞 限制容器之间的网络流量 限制容器的内存使用量 为Docker启用内容信任 将容器的根文件系统挂载为只读 审核Docker文件和目录 默认情况下&#xff0c;同一主机上的容器之间允许所有网络通信。 如果不需要&#xff0c;请限制所有容器间的通信。 将需要相互通…

在服务器上使用Docker运行SRS Stack,推拉直播流、多平台转播、本地录制、虚拟直播、直播转码、AI字幕、其他

SRS Stack | SRS (ossrs.net) Docker​ 推荐使用Docker运行SRS Stack&#xff1a; docker run --restart always -d -it --name srs-stack -v $HOME/data:/data \-p 2022:2022 -p 2443:2443 -p 1935:1935 -p 8000:8000/udp -p 10080:10080/udp \registry.cn-hangzhou.aliyun…

深度学习论文解读分享之diffGrad:一种卷积神经网络优化方法

IEEE TNNLS 2020&#xff1a;diffGrad: 一种卷积神经网络优化方法 题目 diffGrad: An Optimization Method for Convolutional Neural Networks 作者 Shiv Ram Dubey , Member, IEEE, Soumendu Chakraborty , Swalpa Kumar Roy , Student Member, IEEE, Snehasis Mukherjee…

K8S----YAML

kubernetes中资源可以使用YAML描述&#xff08;如果您对YAML格式不了解&#xff0c;可以参考YAML语法&#xff09;&#xff0c;也可以使用JSON。其内容可以分为如下四个部分&#xff1a; typeMeta&#xff1a;对象类型的元信息&#xff0c;声明对象使用哪个API版本&#xff0c…

井盖异动传感器,守护脚下安全

随着城市化进程的加速&#xff0c;城市基础设施的安全问题日益受到关注。其中&#xff0c;井盖作为城市地下管道的重要入口&#xff0c;其安全问题不容忽视。然而&#xff0c;传统的井盖监控方式往往存在盲区&#xff0c;无法及时发现井盖的异常移动。为此&#xff0c;我们推出…

nginx查看连接数的几种方法

前言 nginx作为目前最流行的web服务器之一&#xff0c;在许多生产环境都能看到他的踪影。有时候&#xff0c;我们需要统计nginx的连接配置&#xff0c;本文主要分享一下如何统计nginx的连接数。 方法一 netstat 使用netstat统计连接数&#xff0c;这种是将master和worker一起…

linux安装MySQL5.7(安装、开机自启、定时备份)

一、安装步骤 我喜欢安装在/usr/local/mysql目录下 #切换目录 cd /usr/local/ #下载文件 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz #解压文件 tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local …

使用Cloudreve快速搭建一个私有网盘,配置存储策略和管理权限以及Webdav设置访问

Cloudreve 是什么&#xff1f; Cloudreve 可以让您快速搭建起公私兼备的网盘系统。Cloudreve 在底层支持不同的云存储平台&#xff0c;用户在实际使用时无须关心物理存储方式。你可以使用 Cloudreve 搭建个人用网盘、文件分享系统&#xff0c;亦或是针对大小团体的公有云系统。…

LogicBroker上进行 Babylist EDI项目测试指南

在LogicBroker上启动对接Babylist onboarding流程 接受邀请并填写Onboarding表单 企业将会收到一封入驻邀请电子邮件&#xff0c;邮件中将会包含Onboarding表单的链接。 1.在标题为 “[Supplier] has been invited to connect with [Retailer]” 的邮件中&#xff0c;点击Ac…

GIT SourceTree 回滚提交

步骤一&#xff1a; 步骤二&#xff1a; 步骤三&#xff1a; 在终端输入命令&#xff08;位置是项目目录下&#xff09; git push origin feature_mo2.1_r3_zhanx653 -f

Git的简单使用说明

Git入门教程 git的最主要的作用&#xff1a;版本控制&#xff0c;协助开发 一.版本控制分类 ​​ 1.本地版本控制 ​​ 2.集中版本控制 ​​ 所有的版本数据都存在服务器上&#xff0c;用户的本地只有自己以前所同步的版本&#xff0c;如果不连网的话&#xff0c;用户就看不…

解决ssh:connect to host github.com port 22: Connection timed out与kex_exchange_identification

一、问题 无法进行clone项目和其他Git操作。执行检测连接命令 ssh -T gitgithub,com报错 ssh:connect to host github.com port 22: Connection timed out 即&#xff1a;连接22端口超时 涉及到的文件&#xff1a; C:\Users\JIACHENGER.ssh\config C:\Users\JIACHENGER.ssh\…

C++(9.5)——浅谈new和delete的实现原理

(注:本文是针对上篇文章中C内存管理的两个关键字)两个关键字原理的解析&#xff0c;对于这两个关键字的使用并没有什么影响&#xff0c;如果只想得知两个关键字的使用方法&#xff0c;则可以直接跳过本篇文章&#xff09; 目录 1. 引入&#xff1a; 2.operator new 与 operat…

SSL证书在哪里申请?

SSL证书可以有效帮助您的网站解决部分安全问题&#xff0c;并让用户访问时感觉到更加安全。并且对网站的seo有良好的帮助。 SSL证书在哪里申请的步骤 永久免费SSL证书_永久免费https证书_永久免费ssl证书申请-JoySSL 一&#xff1a;可以在JoySSL申请到免费的SSL证书&#xf…

“To-Do Master“ GPTs:重塑任务管理的趣味与效率

有 GPTs 访问权限的可以点击链接进行体验&#xff1a;https://chat.openai.com/g/g-IhGsoyIkP-to-do-master 部署私人的 To-Do Master 教程&#xff1a;https://github.com/Reborn14/To-Do-Master/tree/main 引言 在忙碌的日常生活中&#xff0c;有效地管理日常任务对于提高生…