• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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
    

    参数介绍:

    使用该文件对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
    

    参数解释:

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

    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迁移变更内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 记一次MongoDB性能问题(从MySQL迁移到MongoDB)
    上一篇:mongodb的安装和开机自启动详细讲解
    下一篇:阿里云服务器部署mongodb的详细过程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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