请选择 进入手机版 | 继续访问电脑版

[MongoDB] mongodb数据库迁徙 变更的办理 方案

[复制链接]
查看40 | 回复9 | 2021-9-13 05:19:50 | 显示全部楼层 |阅读模式
目次

媒介

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

 缺乏变更汗青 的记录,要么在升级多套不同版本环境时,必要 耗费大量时间去探求 数据库变更记录以及实行 脚本;

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

​ 利用 到开源库:migrate, 如今 已经支持多种不同范例 数据库(可视化如今 利用 的为mongodb,已经支持);

利用

​ migrate提供两种方式举行 变更操作:1. 下令 行方式  2. SDK方式(利用 Go)

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

安装

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

​ 直接解压则可以利用 ;

简单利用

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

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

  1. {version}_{title}.up.{extension}
  2. {version}_{title}.down.{extension}
复制代码

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

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

extension: 表示文件扩展名;

举比方 mongodb数据库:

  1. 0001_init_database.down.json
  2. 0001_init_database.up.json
复制代码

在创建迁移 文件时,可以利用 migrate create 下令 举行 创建,如

  1. # migrate create [-ext E] [-dir D] [-seq] [-digits N] [-format] NAME
  2. $ migrate create -ext json -dir migrations -seq init_database
  3. ~/migrations/000001_init_database.up.json
  4. ~/migrations/000001_init_database.down.json
复制代码

参数先容 :

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

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

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

参数表明 :

  • verbose: 打印当前变更日记
  • source: 变更文件存放目次 ,最好进入本项目标 migrations目次 下实行 , 利用 ls可查看当前全部 数据库
  • database: 为monogdb毗连 uri
  • up: 升级  (利用 down 降级)

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

  1. mongos> use migrations;
  2. switched to db migrations
  3. mongos> show collections;
  4. migrate_advisory_lock
  5. schema_migrations
  6. test
  7. mongos> db.test.find()
  8. { "_id" : ObjectId("612e3f5febb6de55cdeec1de"), "name" : "aaa" }
  9. # 多生成了两张表,其中schema_migrations为迁移数据记录;
  10. mongos> db.schema_migrations.find();
  11. { "_id" : ObjectId("612dcb8023fbb5b85368b874"), "version" : 1, "dirty" : false }
复制代码

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

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

后续

​ 在项目中维护一个数据库/设置 文件变更汗青 ,将项目重新部署时,可以或许 通过变更汗青 ,完成全部 改动的变更;无需耗费人力去找相干 开发 ;

到此这篇关于mongodb数据库迁移 变更的文章就先容 到这了,更多相干 mongodb迁移 变更内容请搜索 脚本之家从前 的文章或继续欣赏 下面的相干 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 精力束台经 | 2021-9-13 07:06:04 | 显示全部楼层
看了这么多帖子,第一次看到这么有深度了!
回复

使用道具 举报

avatar 极品小处男处v | 2021-9-26 23:13:18 | 显示全部楼层
支持楼上的!
回复

使用道具 举报

avatar 123457376 | 2021-10-4 05:18:49 | 显示全部楼层
admin楼主给脑残下了定义!
回复

使用道具 举报

avatar 瑞星卡卡卡卫 | 2021-10-4 09:50:33 | 显示全部楼层
admin楼主的病已经好了百分之六十二了!
回复

使用道具 举报

avatar 123457505 | 2021-10-6 13:03:44 | 显示全部楼层
骂人也是要有水平的!
回复

使用道具 举报

avatar 123457682 | 2021-10-10 17:18:38 | 显示全部楼层
admin楼主是一个典型的文艺青年啊!
回复

使用道具 举报

avatar 做农告根乎 | 2021-10-10 18:10:29 | 显示全部楼层
系统居然说我是在灌水,我有吗?
回复

使用道具 举报

avatar 乱放大的宙斯宙t | 2021-10-10 18:40:46 | 显示全部楼层
admin楼主很有经验啊!
回复

使用道具 举报

avatar 天之涯神之兵米 | 2021-10-13 02:01:58 | 显示全部楼层
这一年啥事没干,光研究admin楼主的帖子了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则