我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mongodb数据库迁移变更的解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mongodb数据库迁移变更的解决方案

前言

在版本迭代过程中,存在数据库变更的几率,如增加某张表某个字段,删除某个字段等;​

 缺乏变更历史的记录,要么在升级多套不同版本环境时,需要耗费大量时间去寻找数据库变更记录以及执行脚本;

​ 该方案提供一种数据库变更记录方式;

​ 使用到开源库:migrate, 目前已经支持多种不同类型数据库(可视化目前使用的为mongodb,已经支持);

使用

​ migrate提供两种方式进行变更操作:1. 命令行方式  2. SDK方式(使用Go)

​ 在本方案中使用的为命令行方式(官方文档)。

安装

​ 通过GitHub下载最新二进制文件包: github.com/golang-migr…

​ 直接解压则可以使用;

简单使用

​ 每一次数据库的变更都分为两种情况:up(升级版本)和down(降级版本);

​ 所以每一次变更记录的编写都需要两个文件,


{version}_{title}.up.{extension}
{version}_{title}.down.{extension}

version为当前的版本号,可使用顺序序号或者时间戳进行表示,程序会对第一个'_'前的字符当成版本号;

title用于记录当前的变更的主题,主要是对用户有较好的提示作用;

extension: 表示文件扩展名;

举例如mongodb数据库:


0001_init_database.down.json  
0001_init_database.up.json

在创建迁移文件时,可以使用migrate create 命令进行创建,如


# migrate create [-ext E] [-dir D] [-seq] [-digits N] [-format] NAME
$ migrate create -ext json -dir migrations -seq init_database
~/migrations/000001_init_database.up.json
~/migrations/000001_init_database.down.json

参数介绍:

  • ext: 文件扩展名;
  • dir:  创建的目录;
  • seq: 是否以序号模式进行创建;
  • digits: 序号长度(默认为6);
  • format:时间格式。

使用该文件对mirations数据库中的test集合,进行初始化操作;


$ cat migrations/000001_init_database.up.json
[
    {
       "insert": "test",
       "documents": [{"name": "aaa"}]
    }
]
$migrate -verbose -source file://migrations --database mongodb://root:pwd@<数据库IP>:27017/migrations?authSource=admin  up
2021/08/31 14:26:06 Start buffering 1/u init_database
2021/08/31 14:26:08 Read and execute 1/u init_database
2021/08/31 14:26:08 Finished 1/u init_database (read 1.516025172s, ran 75.143261ms)
2021/08/31 14:26:08 Finished after 1.654028624s
2021/08/31 14:26:08 Closing source and database

参数解释:

  • verbose: 打印当前变更日志
  • source: 变更文件存放目录,最好进入本项目的migrations目录下执行, 使用ls可查看当前所有数据库
  • database: 为monogdb连接uri
  • up: 升级  (使用 down 降级)

查看数据库,发现数据已经插入到了数据库中:


mongos> use migrations;
switched to db migrations
mongos> show collections;
migrate_advisory_lock
schema_migrations
test
mongos> db.test.find()
{ "_id" : ObjectId("612e3f5febb6de55cdeec1de"), "name" : "aaa" }
# 多生成了两张表,其中schema_migrations为迁移数据记录;
mongos> db.schema_migrations.find();
{ "_id" : ObjectId("612dcb8023fbb5b85368b874"), "version" : 1, "dirty" : false }

修改version能够控制migrate的升级版本;当本身数据库的版本已经高于最新版本时,可以使用force命令,修改当前数据库迁移的版本号;


$ migrate -verbose -source file://migrations --database mongodb://root:pwd@<数据库IP>:27017/migrations?authSource=admin force 000004
2021/08/31 14:34:52 Finished after 89.470244ms
2021/08/31 14:34:52 Closing source and database
# 查看数据库版本已经修改到了4版本,再次进行up操作则会被告知no change;
mongos> db.schema_migrations.find();
{ "_id" : ObjectId("612dcd8c1e88c95afcb426fe"), "version" : 4, "dirty" : false }

后续

​ 在项目中维护一个数据库/配置文件变更历史,将项目重新部署时,能够通过变更历史,完成所有改动的变更;无需耗费人力去找相关开发;

到此这篇关于mongodb数据库迁移变更的文章就介绍到这了,更多相关mongodb迁移变更内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mongodb数据库迁移变更的解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

云服务器数据迁移解决方案

云服务器数据迁移解决方案通常需要包括以下步骤:数据导入:首先需要在云服务器上进行数据导入工作,可以使用数据迁移工具将服务器端的文件或数据文件导入到云服务器的数据中心,也可以从云服务器的数据中心导入数据。导入过程需要注意数据导入的完整性和一致性,确保导入的数据准确无误。数据备份:云服务器数据迁移过程中需要对服务器上的数据进行备份,以防止数据丢失或损坏。备份可以采用本地备份和网络备份相结合的方式进行。导出数据...
2023-10-27

由数据迁移至MongoDB导致的数据不一致问题及解决方案

##故事背景###企业现状2019年年初,我接到了一个神秘电话,电话那头竟然准确的说出了我的昵称:上海小胖。我想这事情不简单,就回了句:您好,我是小胖,请问您是?“我就是刚刚加了你微信的 xxx 啊”哦……他只是把我的微信昵称报出来了……随着深入沟通,了解到对
由数据迁移至MongoDB导致的数据不一致问题及解决方案
2021-02-24

SQL级别数据库云迁移挑战与解决方案

数据库云迁移是将现有数据库迁移到云端的过程,这在很大程度上可以提升数据库的灵活性、可靠性和安全性。然而,数据库云迁移也面临一些挑战,以下是一些常见的挑战以及相应的解决方案:数据迁移:迁移大量数据可能需要较长时间,并且可能会导致数据一致性问题
SQL级别数据库云迁移挑战与解决方案
2024-08-04

mongodb整个数据库迁移的方法是什么

迁移MongoDB数据库有多种方法可供选择,以下是一种常见的方法:备份原始数据库:使用mongodump命令导出原始数据库的数据和配置信息,生成一个备份文件。例如,可以执行以下命令备份数据库:mongodump --db
mongodb整个数据库迁移的方法是什么
2024-04-09

MongoDB数据库快速迁移的方法是什么

要在MongoDB数据库之间进行快速迁移,可以采用以下方法之一:1. 备份和恢复:使用mongodump命令将原始数据库备份到一个文件,然后使用mongorestore命令将备份的数据库恢复到新的数据库中。这种方法适用于小型数据库和较短的迁
2023-08-30

MongoDB技术开发中遇到的数据迁移问题解决方案分析

MongoDB技术开发中遇到的数据迁移问题解决方案分析摘要:随着数据量的不断增长和业务需求的变化,数据迁移成为了开发中一个必须面对的问题。本文将针对使用MongoDB进行数据迁移时可能遇到的问题进行分析,并给出解决方案,包含具体的代码示例。
2023-10-22

mongodb数据迁移的方法是什么

MongoDB数据迁移的方法有以下几种:数据备份和还原:使用mongodump命令将数据备份到文件中,然后使用mongorestore命令将备份的数据还原到新的MongoDB实例中。副本集迁移:如果源数据库是一个MongoDB副本集,可以使
2023-10-25

mysql数据库迁移的方法

mysql数据库迁移的方法:1、确定迁移需求;2、备份数据;3、恢复数据到新服务器;4、调整配置文件;5、迁移用户和权限。详细介绍:1、确定迁移需求,在开始迁移之前,需要明确迁移的目的和需求,这包括确定要迁移的数据库、目标平台和时间表;2、
mysql数据库迁移的方法
2023-11-16

云服务器数据迁移解决方案怎么写

1、首先,明确迁移的目的和目标,例如是为了升级服务器,优化应用程序等;2、其次,阐述迁移的步骤和流程,例如采用不同的迁移工具,采用不同的迁移方法等;3、在迁移的过程中,需要保证数据的完整性和准确性,同时确保数据迁移的稳定性和安全性;4、最后,对迁移完成后的数据进行备份和恢复,确保数据的安全和完整性。在写作过程中,需要结合实际的迁移场景和需求,同时考虑到读者的背景和专业知识,以确保解决方案的可行性和有效...
2023-10-27

云服务器数据迁移解决方案有哪些

数据库迁移:将服务器上的数据库数据迁移到另一个云服务器上,确保数据的一致性和安全性。数据库集群迁移:将服务器上的多个数据库进行集群迁移,以便能够同时迁移多个数据库。数据迁移工具:使用数据迁移工具,可以方便地将服务器上的数据库数据迁移到另一个云服务器上。数据备份和恢复:在迁移数据之前,需要进行数据备份,确保在迁移过程中数据的安全性。云服务器安全措施:在迁移服务器之前,需要对云服务器进行安全加固,以确...
2023-10-27

阿里云数据库迁移限制解除不了?原因及解决方案

在使用阿里云数据库时,可能会遇到数据库迁移限制无法解除的情况,本文将为您详细介绍原因及解决方案。一、问题描述阿里云数据库迁移限制无法解除,这种情况通常出现在您尝试从一个数据库迁移到另一个数据库时,迁移过程中可能会出现各种问题,如数据库连接失败、迁移文件损坏等,这些都会导致迁移限制无法解除。二、问题原因数据库连接问
阿里云数据库迁移限制解除不了?原因及解决方案
2023-11-12

Mysql迁移到TiDB双写数据库兜底方案详解

这篇文章主要为大家介绍了Mysql迁移到TiDB双写数据库兜底方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-03

MongoDB怎么处理架构变化时的数据迁移

在MongoDB中处理架构变化时的数据迁移通常有以下几种方法:导出和导入数据:将原有的数据导出为JSON或CSV格式,然后根据新的架构重新导入数据。这种方法适用于数据量较小且变化较少的情况。使用ETL工具:ETL(Extract, Tran
MongoDB怎么处理架构变化时的数据迁移
2024-04-19

Python中MySQL数据迁移到MongoDB脚本的方法

MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录