婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mongodb數據庫遷移變更的解決方案

mongodb數據庫遷移變更的解決方案

熱門標簽:小裙科技電銷機器人怎樣 呼和浩特外呼系統原理是什么 河南電話外呼系統招商 內蒙古營銷智能外呼系統哪個好 長沙電銷外呼防封卡是什么 crm外呼系統聯系方式 外呼線路資源屬于電信業務嗎 智能外呼系統官網 青白江400企業電話申請

前言

在版本迭代過程中,存在數據庫變更的幾率,如增加某張表某個字段,刪除某個字段等;​

 缺乏變更歷史的記錄,要么在升級多套不同版本環境時,需要耗費大量時間去尋找數據庫變更記錄以及執行腳本;

​ 該方案提供一種數據庫變更記錄方式;

​ 使用到開源庫: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遷移變更內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 記一次MongoDB性能問題(從MySQL遷移到MongoDB)

標簽:安順 黃石 楚雄 白山 呼倫貝爾 舟山 菏澤 池州

巨人網絡通訊聲明:本文標題《mongodb數據庫遷移變更的解決方案》,本文關鍵詞  mongodb,數據庫,遷移,變更,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mongodb數據庫遷移變更的解決方案》相關的同類信息!
  • 本頁收集關于mongodb數據庫遷移變更的解決方案的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 南川市| 河北省| 永和县| 宜城市| 库伦旗| 长兴县| 射阳县| 新巴尔虎右旗| 遂平县| 东乡县| 广州市| 彭水| 花垣县| 衡东县| 宁陕县| 南汇区| 阿拉尔市| 蒙自县| 加查县| 清新县| 乌鲁木齐市| 霍州市| 南投市| 嘉义县| 庆阳市| 北海市| 德州市| 长汀县| 石嘴山市| 海林市| 庄浪县| 奉节县| 天祝| 桃源县| 大冶市| 高密市| 勃利县| 福州市| 栖霞市| 喀喇沁旗| 定襄县|